当Debug.Assert失败时导致VS2010调试器中断
当Debug.Assert
的参数计算结果为false
时,是否有任何方法导致Visual Studio 2010在调试期间中断?
例如:在我的代码中我有这样的行:
Debug.Assert(!double.IsInfinity(x));
如果我不调试,当断言失败时会弹出一个窗口。
但是当我调试时,断言会记录到“输出”窗格中,这很容易丢失; 没有弹出窗口,调试器不停止。 因此:当Debug.Assert
失败时,有没有办法强制Visual Studio调试器中断?
(顺便说一句:我正在开发一个基于WPF的桌面应用程序,在Windows窗体应用程序中,行为似乎不一样:在此,调试器在Debug.Assert
上Debug.Assert
。)
编辑 :请让我澄清:我没有寻找替代Debug.Assert(),因为我的代码和外部代码是使用完全Debug.Assert()语句。 我正在寻找一种方式来导致Visual Studio调试器在Debugg.Assert
失败时Debugg.Assert
。 (我认为早期的VS版本做到了这一点,并且在VS2010中改变了行为)。
如果通过调试您的意思是使用“Step Into”功能,请参阅此MS对该问题的回答。
http://connect.microsoft.com/VisualStudio/feedback/details/522995/system-diagnostics-debug-assert-doesnt-pop-up-messagebox-correctly-when-step-into-it-in-vs-2010-和2008年
在Assert语句中使用“Step Over”也可以解决这个问题(对我来说)。
您可以使用条件断点来处理这种行为,只需在要断开的行上设置断点,然后右键单击左侧的点并选择条件,在弹出式菜单中输入所需的条件(在您的情况下为双倍)。 IsInfinity(X))
使用Debugger.Break方法(在System.Diagnostics
名称空间中)。 如果您在调试器中运行,这会中断执行。
上一篇: Causing VS2010 debugger to break when Debug.Assert fails
下一篇: Why doesn't Visual Studio 2010 break on an unhandled exception?