What is different between using #if (DEBUG) and System.Diagnostics.Debugger.IsAttached in visual studio? Are there cases of the DEBUG flag being set, but no debugger attached, or cases when a debugger could be attached when the DEBUG flag is not set?
What is different between using #if (DEBUG) and System.Diagnostics.Debugger.IsAttached in visual studio? Are there
Share
#if DEBUGensures the code is not included in the assembly at all in release builds. Also, code included by#if DEBUGruns all the time in a debug build – not just when running under a debugger.Debugger.IsAttachedmeans the code is included for both debug and release builds. And a debugger can be attached to release builds too.It’s common to use both together.
#if DEBUGis usually used for things like logging, or to reduce exception handling in internal test builds.Debugger.IsAttachedtends to just be used to decide whether to swallow exceptions or show them to a programmer – more of a programmer aid than anything else.