1

这似乎与关于第一次机会例外的所有其他消息不同:)

我正在尝试追踪在串行端口入站数据处理程序中抛出的偶然异常。当它触发时,堆栈跟踪不会显示我的任何代码——它都是标准程序集中的东西,以 System.Threading.ThreadHelper.ThreadStart() 开头。由于它在我自己的任何代码之外,因此我无法处理它并且一无所知,直到它在下降过程中遇到 CurrentDomain_UnhandledException。

我正在启动一个线程来处理传入的串行通信。由于串行端口是一个 USB 设备,可能会意外拔出,然后端口就会消失,当出现问题时,我会终止线程并重新开始,枚举端口并查询它们以在设备回来时再次拿起设备。

在输出中,我看到了几个“‘System.Threading.ThreadAbortException’类型的第一次机会异常”。其中一些在 MS 代码中。我希望能够打破每一个,这样我就可以确认它正在被处理,而不是在某个地方被吞食。但是,当我在 Debug->Exceptions 菜单中勾选“System.Threading”抛出框时,VS 永远不会中断。即使我禁用“只是我的代码”,我认为这会扩大调试器的范围。

有谁知道我缺少的第三件事会让VS在这些异常上中断?

4

1 回答 1

-1

要打破第一次机会异常,您可以在 Visual c++ 2010 中执行此操作,转到 debug->exceptions 并在 c++ 异常中检查 std::exception 的复选框,我认为这对我有用,这是前一阵子

于 2013-02-20T06:57:10.290 回答