【发布时间】:2013-11-15 08:05:34
【问题描述】:
使用 MinGW GDB 7.6 版,得到很多这样的回溯:
(gdb) bt
#0 0x000000007703d256 in ntdll!RtlEnterCriticalSection ()
from C:\Windows\SYSTEM32\ntdll.dll
#1 0x0000000000000000 in ?? ()
这并不完全有用。
这是为什么?反正有什么更有用的吗?当 this 是我得到的回溯时发生错误时,尝试弄清楚一个复杂的多线程程序在做什么绝对是痛苦的。
【问题讨论】:
-
你开启gdb不间断模式了吗?有一个很好的 gdb 多线程调试示例here
-
这是一个 32 或 64 的应用程序,同样适用于操作系统?此外,由于堆栈包含对
ntdll的调用,因此可以肯定地说这是系统调用的一部分。了解我对影响 .NET 异常的内核调用的了解后,如果此处类似的东西影响回溯,我不会感到惊讶。 -
64 位应用程序/64 位操作系统。
-
我只是猜测,但我怀疑这是因为 GDB 不处理 Microsoft 的 PDB 符号格式,因此 GDB 在 Window 的系统 DLL 中除了导出之外没有符号信息可供处理。