我有一个奇怪的问题有我vs调试器。时运行我的计划下vs调试器,调试器不会破坏对未经处理的例外。而不是控制返回给VS,如果该程序退出正常。如果我看起来在"输出"标签,有一次机会exeption列出前线的终止。

我的理解如何使用"例外"框从"调试"菜单。我有打破关于未经处理的例外检查。如果我先检查一下机会的例外情况的具体exeption这就是发生,调试器将会停止。

然而,我的理解是,调试器,也应该停止在任何'未经处理的-例外情况'.它不是做这个给我。

这里是最后的几行我的输出:

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).

我不明白为什么唯一的例外是flagges作为一个"第一次机会"例外情况时,它是未处理。

我认为,0xe0434f4d退出的代码是一个通用COM错误。

任何想法?

地铁。

有帮助吗?

解决方案

如果你在64位的操作系统,有一个非常好的机会,你被咬了一个系统级行为原因的例外情况消失。最可靠的方式再现,它是使一个新的WinForm应用程序,简单地抛出的一个例外在加载;它会出现不会引发。看看这些:

  1. Visual Studio不断上未经处理的异常windows64位
    • http://social.msdn.microsoft.com/Forums/en/vsdebug/thread/69a0b831-7782-4bd9-b910-25c85f18bceb
  2. 的情况下消失的加载的例外
  3. 沉默的例外64发展机(Microsoft连接)
    • https://connect.microsoft.com/VisualStudio/feedback/details/357311/silent-exceptions-on-x64-development-machines

第一是什么我发现自谷歌(在此之后的线没有帮助),并且,线,导致我到以下两个。第二个具有最好的解释,第三是Microsoft的错误/机票(即重新确认,这是"通过设计的"行为)。

所以,基本上,如果应用程序会引发一个例外是命中的一个核心模式边界上其方式回到了堆,它得到被阻止在那边界。和Windows队的决定最好的方式来处理它是假装的例外的处理;执行继续因为如果一切正常完成。

哦,这种情况发生 无处不在.调试和释放是无关紧要的。.净vs C++是无关紧要的。这是操作系统级行为。

想象一下,你得写一些关键数据的磁盘中,但它失败的错误一边的一个内核模式边界。其他代码试图使用它以后,如果你是幸运的,你的检测的东西是错误的数据...但为什么?我打赌你从没考虑你的应用程序未能编写的数据,---因为你期望的异常会被抛出。

抽搐。

其他提示

当我读到关于在“例外...”中有两个复选框的答案时。对话框,我回去再次打开对话框。我只有一列复选框 - 用于中断“Thrown”。

事实证明,如果你没有“启用我的代码(仅管理)”,在Debug选项中检查了“User-Unhandled”和“User-Unhandled”。列未显示在“例外”中对话框。

我选择了“启用我的代码”选项并验证“用户未处理”选项“例外”复选框为所有例外类别选择了对话框。

我能够获得未处理的异常以进入一个会话的调试器。但是当我第二天回来时,行为和以前一样。

地铁。

Ctl-D,E打开Exceptions窗口。您可以设置您想要的但不想要的例外情况。

“例外情况......”中有两个复选框。框中,我通常必须检查它们以使其在未处理的异常中中断。无论它只是阅读,你需要检查一个。

每次这种情况发生在我身上。这似乎是一个bug或其他东西,因为当我复制场景时,异常被捕获并像往常一样显示。

我遇到了类似的问题,并检查了“启用我的代码(仅管理)”。修复了问题,如果我把它关闭然后问题又回来了,不知道为什么(但是有些DLL在未经检查时似乎被加载会导致行为)。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top