5

我有一个使用外部库的程序。其中一个库(负责相机硬件)启动一个线程并意外崩溃。有时每两分钟一次,有时不是一个小时。没有明显的诱因。线程没有捕获到异常,这会导致应用程序终止。:(

幸运的是,我可以RaiseException()kernel32.dll. 调用堆栈上没有其他我知道它们的用途的函数。

调试器告诉我,这是一个 std::bad_alloc 异常。调试器是怎么知道的?我能以某种方式获得有关异常的更多信息吗?如有必要,我会查看反汇编,但我不知道从哪里获取信息。

我正在使用 Visual Studio C++ 2010,对汇编程序非常熟悉,并且对 WINAPI 有一些了解。我们想尽快发布这个软件,这个错误必须消失。

4

1 回答 1

4

改用 Windbg,这是一个核心调试器,它什么都不隐藏,而是“按原样”公开事物。使用sxe语法启用所需的异常(Windgb 将启用在任何 SEH 类型处中断,而不仅仅是 C++)。Windbg 对第一次机会异常和第二次机会异常也有明确的区分。然后您应该弄清楚这是引发的 C++ 异常还是更基本的 SEH 类型,例如可能是 AV。

于 2012-08-21T16:21:46.300 回答