【发布时间】:2020-12-03 21:09:00
【问题描述】:
各种其他问题暗示可以继续调试通过“异常未处理”弹出窗口,如下所示:
这是来自 Visual Studio 2019 的弹出窗口,但 VS 2015 提供了类似的行为。在这两种情况下,对于我尝试过的所有 Win32/x64 和 Debug/Release 组合,调试器都拒绝越过引发未处理异常的点——每次尝试继续时都会再次弹出相同的弹出窗口。我想超越这一点,继续我通过SetUnhandledExceptionFilter() 设置的代码。这可能吗?
This strongly upvoted answer 建议通过 Tools -> Options 下的选项然后 Debugging -> General 关于展开堆栈...但评论答案表明该选项可能已从 VS2017 中消失。我在 VS 2015 中找到了该选项,但它没有达到预期的效果。因此,尽管投票数较少,该问题的公认答案是否正确 - 设计上不可能继续调试未处理的异常?
【问题讨论】:
-
您是否希望您的程序忽略异常并继续运行(通常很难),或者您可以在调试器中做些什么来修复/忽略问题并继续运行?
-
我明白你的意思。您想调试未处理的异常过滤器。这实际上感觉像是一个 VS 错误。在“异常设置”下有一个标有“中断此异常”的框,但取消选中它似乎没有任何效果。
-
正如我所说,我想推过去异常,因为我想测试未处理的异常处理。我继承了这个代码;我不明白。如果可能的话,能够在调试器中单步执行它会很有帮助。
-
所以关于前三个 cmets:我想故意导致未处理的异常并调试以下内容。因为在现实世界中,未处理的异常处理随之而来。在 Visual Studio 中,我似乎遇到了一堵石墙 :-(
-
@omatai 如果您在“异常设置”下检查了异常un,但它仍然会闯入调试器,那么这就是second chance exception,意思是un处理。如果您认为代码应该捕获它,则显示异常上下文和代码。
标签: c++ visual-studio debugging exception unhandled-exception