gpt4 book ai didi

c++ - 如何调试未知代码中的异常?

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:35:58 25 4
gpt4 key购买 nike

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

幸运的是,当 kernel32.dll 中的 RaiseException() 函数引发异常时,我可以停止应用程序。调用堆栈上没有其他函数,我知道它们的用途。

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

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

最佳答案

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

关于c++ - 如何调试未知代码中的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12059007/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com