GDB Windows? 在回溯

使用MinGW GDB版本7.6,得到很多像这样的回溯:

(gdb) bt #0 0x000000007703d256 in ntdll!RtlEnterCriticalSection () from C:\Windows\SYSTEM32\ntdll.dll #1 0x0000000000000000 in ?? () 

这不是很有用。

为什么是这样? 有没有办法得到更有用的东西? 当我得到这个回溯时,试图找出一个错误发生的复杂的multithreading程序是非常痛苦的。

我用MinGW 64遇到同样的问题。使用编译器开关-g3 -Og最后显示了所有的回溯。

原因可能是gdb有一个“当前”线程的概念,它是随机选择的。

你可以通过发出gdb命令info threads来看你的程序当前正在执行什么info threads 。 通过thread <num>切换“当前”线程。 尝试再次获得有意义的回溯。

也要确定

  • 您的可执行文件是用调试信息( -g )编译的,
  • gdb能够处理用于将调试信息编码到您的可执行文件中的格式。 您可能想验证gdb是否可以在`main()'处设置断点,并且在那里表现合理。