首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > Windows Mobile >

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

2013-12-19 
为什么有了条件编译符号“DEBUG”还要来个Debugger.IsAttached比如官方的示例代码if (Debugger.IsAttached){

为什么有了条件编译符号“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)这是在运行时的,

两者场景就不一样

热点排行