Visual studio 2008 VS2008调试器不会因未处理的异常而中断
我的vs调试器有一个奇怪的问题。在vs调试器下运行我的程序时,调试器不会因未处理的异常而中断。相反,控制返回到VS,就好像程序正常退出一样。如果我查看output选项卡,就在线程终止之前列出了第一次机会验证 我了解如何使用调试菜单中的“异常”框。我已检查未处理异常的中断。如果我检查正在发生的特定异常的首次机会异常,调试器将停止 然而,我的理解是,调试器也应该在任何“未处理的异常”时停止。这不是为了我 以下是“我的输出”选项卡的最后几行:Visual studio 2008 VS2008调试器不会因未处理的异常而中断,visual-studio-2008,debugging,unhandled,Visual Studio 2008,Debugging,Unhandled,我的vs调试器有一个奇怪的问题。在vs调试器下运行我的程序时,调试器不会因未处理的异常而中断。相反,控制返回到VS,就好像程序正常退出一样。如果我查看output选项卡,就在线程终止之前列出了第一次机会验证 我了解如何使用调试菜单中的“异常”框。我已检查未处理异常的中断。如果我检查正在发生的特定异常的首次机会异常,调试器将停止 然而,我的理解是,调试器也应该在任何“未处理的异常”时停止。这不是为了我 以下是“我的输出”选项卡的最后几行: A first chance exception of t
A first chance exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll
The thread 0x60c has exited with code 0 (0x0).
The program '[3588] ALMSSecurityManager.vshost.exe: Managed' has exited with code -532459699 (0xe0434f4d).
我不明白为什么这个异常在未处理时会被标记为“第一次机会”异常
我认为0xe0434f4d退出代码是一个通用的COM错误
有什么想法吗
Metro.在“异常…”框中有两个复选框,我通常必须同时选中这两个复选框才能在未处理的异常中中断。不管它读起来像是只需要检查一个。Ctl-D,E将打开异常窗口。你可以设置你想要的和不想要的例外情况。每当这种情况发生在我身上时,你也可以设置一次。这看起来像是一个bug或什么的,因为当我复制场景时,异常会像往常一样被捕获和显示。当我读到关于在“异常…”对话框中有两个复选框的答案时,我返回并再次打开对话框。我只有一列复选框——用于“抛出”的中断 事实证明,如果在调试选项中没有选中“仅启用我的代码(仅管理)”,则“用户未处理”列不会显示在“异常”对话框中 我选择了“仅启用我的代码”选项,并验证“异常”对话框上的“用户未处理”复选框是否已为所有异常类别选中 我能够让未处理的异常进入调试器进行一次会话。但当我第二天回来时,我的行为和以前一样
Metro。如果您使用的是64位操作系统,那么很有可能您被导致异常消失的操作系统级行为所困扰。复制它最可靠的方法是创建一个新的WinForm应用程序,该应用程序只在OnLoad中抛出一个异常;它似乎不会被抛出。看看这些:
- http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/69a0b831-7782-4bd9-b910-25c85f18bceb
- https://connect.microsoft.com/VisualStudio/feedback/details/357311/silent-exceptions-on-x64-development-machines
颠簸。我有一个类似的问题,检查“仅启用我的代码(仅管理)”修复了该问题,而如果我将其关闭,则问题再次出现,不知道原因(但可能是某些DLL在未选中时加载导致该行为)。我保证,这不是出于恶意!替代方案是让你的机器运行额外、超慢(不断保存完整的注册上下文),或者在用户模式回调中发生SEH异常时让你的应用程序崩溃。好消息是,用户模式回调仅在窗口过程中(*),因此这不会影响服务应用程序,也不会影响工作线程(即任何非窗口线程)@Paul-我确实更喜欢“instacrash”。至少我现在知道自己有点偏执了。@PaulBetts你关于这个问题的博文声称Windows 7解决了这个问题,因为你从程序兼容性助手那里得到了一个一次性弹出窗口。这是一种奇怪的“修复”。更像是一个小小的创可贴。当然,一个真正的“修复”将允许您像往常一样再次开始调试这些异常。@Jez一次性弹出窗口仅适用于没有Win7清单的应用程序。新开发应该总是有一个Win7清单,这意味着您将能够调试这些异常,因为您将得到(期望的)崩溃behavior@PaulBetts有趣。只是我还是不能让它工作。使用VS2013,在全新Windows窗体应用程序的属性中选择“使用默认设置嵌入清单”,仍然会忽略Form1_加载中引发的异常。添加
app.manifest
,取消对Win7兼容性的注释,并在属性中选择该清单,仍然会忽略Form1_Load中引发的异常。请参阅我的文章,其中可能与“仅启用我的代码”设置本身有关,因此,在后一个会话中,该设置可能以某种方式被恢复