当前位置: 首页 > 编程语言 > C#

当Debug.Assert失败时,VS2010调试器崩溃分享

时间:2023-04-10 12:53:39 C#

当Debug.Assert失败时,VS2010调试器崩溃。调试时导致VisualStudio2010中断?示例:在我的代码中有这一行:Debug.Assert(!double.IsInfinity(x));如果我没有调试,断言失败时会弹出一个窗口。但是当我调试时,断言被记录到输出窗格中,这很容易被遗漏;没有弹出窗口,调试器也不会停止。那么:有没有办法在Debug.Assert失败时强制VisualStudio调试器中断?(顺便说一句:我正在开发一个基于WPF的桌面应用程序。在Windows窗体应用程序中,行为似乎有所不同:这里,调试器在Debug.Assert上。)编辑:请让我澄清一下:我不是在看作为Debug.Assert()的替代方法,因为我使用的代码和外部代码充满了Debug.Assert()语句。我正在寻找一种方法,使VisualStudio调试器在Debugg.Assert失败时执行Debugg.Assert。(我认为早期的VS版本就是这样做的,并且行为在VS2010中发生了变化)。如果通过调试意味着使用“StepInto”功能,请参阅此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语句中使用“StepOver”确实解决了问题(对我而言)。您可以为这种行为使用条件断点,只需在要中断的行上设置一个断点,然后右键单击左侧的点并选择条件,在弹出窗口中输入所需的条件(在您的情况下为双)。IsInfinity(X))使用Debugger.Break方法(在System.Diagnostics命名空间中)。如果您在调试器中运行,这将中断执行。它似乎按预期工作,至少在控制台应用程序中:在调试版本中,会弹出一个对话框,允许您使用调试器进入应用程序,但在发布版本中,没有任何反应。诚然,我只是使用了一个简单的Debug.Assert(false);,但我不明白为什么这会产生很大的不同。我正在运行VisualStudio2010SP1Ultimate。我建议你好好看看你的构建设置。使用System.Collections.Generic;使用System.Linq;使用系统文本;使用系统数据;命名空间ConsoleApplication{类程序{staticvoidMain(string[]args){System.Diagnostics.Debug.Assert(false);控制台.ReadLine();不能在!double.IsInfinity(x)处抛出异常而不使用断言吗?您的应用程序似乎从Debug类中删除了默认的TraceListener,并将其替换为以不同方式实现Fail(string)方法的自定义TraceListener。你可以通过搜索Debug.Listeners的代码来debug.Listeners,看看是否清除或修改了默认代码,或者看看app.config中是否有trace部分。默认情况下,根据我的阅读,您一定会看到弹出窗口。如果使用DefaultTraceListener,您可以将以下部分添加到您的app.config文件,这将打开Debug.Assert(false):有关更多信息,请参阅断言元素和DefaultTraceListener.AssertUiEnabled属性。以上就是C#学习教程:VS2010debuggerinterruptswhenDebug。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: