为什么有了条件编译符号“DEBUG”还要来个Debugger.IsAttached
比如官方的示例代码
if (Debugger.IsAttached)
{
// 出现未处理的异常;强行进入调试器
Debugger.Break();
}
这样不更好吗?
#if DEBUG
// 出现未处理的异常;强行进入调试器
Debugger.Break();
#endif
我到目前还没有感受到IsAttached给我带来了多大的好处,反而把发布版本不需要的代码编译进去了。
难道仅仅为了不用再在DEBUG和release之间切换? Debugger 调试
[解决办法]
这个跟条件编译符号不是一回事吧,release编译一样可以用Debugger.IsAttached。比如捕获到异常正常运行情况下弹出提示信息或者写日志就可以,如果加载了调试器就直接抛出方便调试。
可以参考下这个回答http://stackoverflow.com/questions/7073266/if-debug-vs-system-diagnostics-debugger-isattached,
[解决办法]
条件编译时在编译时期做的决策,
if (Debugger.IsAttached)这是在运行时的,
两者场景就不一样