title: Trace vs Debug in .NET BCL
body: <p>It seems that the </p>
  
  <ul>
  <li><a href="https://msdn.microsoft.com/en-us/library/system.diagnostics.debug(v=vs.110).aspx" rel="noreferrer"><code>System.Diagnostics.Debug</code></a>, and </li>
  <li><a href="https://msdn.microsoft.com/en-us/library/system.diagnostics.trace(v=vs.110).aspx" rel="noreferrer"><code>System.Diagnostics.Trace</code></a> </li>
  </ul>
  
  <p>are largely the same, with the notable exception that <strong>Debug</strong> usage is compiled out in a release configuration.  </p>
  
  <p>When would you use one and not the other?  The only answer to this I've dug up so far is just that you use the <strong>Debug</strong> class to generate output that you only see in debug configuration, and <strong>Trace</strong> will remain in a release configuration, but that doesn't really answer the question in my head.</p>
  
  <p>If you're going to instrument your code, why would you ever use <strong>Debug</strong>, since <strong>Trace</strong> can be turned off without a recompile?</p>