我正在尝试找出我的多线程应用程序崩溃的原因。
因此,我使用 SetUnhandledExceptionFilter 安装未处理异常的处理程序,然后在处理程序中展开并打印堆栈跟踪。它有效..有点.
我尝试了网上的很多例子,但我总是得到这样的东西:
1 - 0x00401ecc - Unknown Function
2 - 0x00401e83 - Unknown Function
3 - 0x004013fa - Unknown Function
4 - 0x7584336a BaseThreadInitThunk
5 - 0x77dc9f72 RtlInitializeExceptionChain
6 - 0x77dc9f45 RtlInitializeExceptionChainPress <RETURN> to close this window...
从来没有发生错误的实际位置。
任何人都可以给出一个在 Windows 上打印未处理异常的堆栈跟踪的真实工作示例吗?非常感谢。
如果它发生在您用于开发的机器上:
-O0
), -ggdb3
标志传递给编译器)。如果它发生在客户端计算机上,那么情况会更复杂,请参阅:
我遇到了确切的问题,并将 MinGW 降级至 7.5 并得到修复。 最新版本的 MinGW 的 Boost 存在问题,导致无法打印堆栈跟踪。您必须使用相当旧的版本,这可能会不舒服。
这是我发现能够打印 MinGW 堆栈跟踪的唯一解决方案。