当前位置: 代码迷 >> Windows Mobile >> 为何有了条件编译符号“DEBUG”还要来个Debugger.IsAttached
  详细解决方案

为何有了条件编译符号“DEBUG”还要来个Debugger.IsAttached

热度:52   发布时间:2016-04-25 07:19:00.0
为什么有了条件编译符号“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)这是在运行时的,

两者场景就不一样
  相关解决方案