GDB Windows ??在Backtraces中

时间:2013-11-15 08:05:35

标签: c++ c windows gdb mingw

使用MinGW GDB 7.6版,可以获得很多这样的回溯:

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

哪个不太有用。

这是为什么?反正有没有更有用的东西?当这个是我得到的回溯时,尝试找出一个复杂的多线程程序正在做什么是非常痛苦的。

2 个答案:

答案 0 :(得分:2)

我使用MinGW 64遇到了同样的问题。使用编译器开关 -g3 -Og 终于很好地展示了所有的回溯。

答案 1 :(得分:0)

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

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

还要确定

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