使用 MinGW GDB 7.6 版,得到很多这样的回溯:
(gdb) bt
#0 0x000000007703d256 in ntdll!RtlEnterCriticalSection ()
from C:\Windows\SYSTEM32\ntdll.dll
#1 0x0000000000000000 in ?? ()
这并不完全有用。
为什么是这样?反正有什么更有用的吗?当我得到的回溯发生错误时,尝试弄清楚一个复杂的多线程程序在做什么是绝对痛苦的。
我在使用 MinGW 64 时遇到了同样的问题。使用编译器开关 -g3 -Og 最终很好地显示了所有回溯。
原因可能是 gdb 有一个“当前”线程的概念,恕我直言,它是随机选择的。
您可以通过发出 gdb 命令查看您的程序当前正在执行的线程info threads
。通过 切换“当前”线程thread <num>
。尝试再次获得有意义的回溯。
还要确保
-g
) 编译的,