GDB 窗口 ??在回溯中
GDB Windows ?? in Backtraces
使用 MinGW GDB 7.6 版本,可以得到很多这样的回溯:
(gdb) bt
#0 0x000000007703d256 in ntdll!RtlEnterCriticalSection ()
from C:WindowsSYSTEM32ntdll.dll
#1 0x0000000000000000 in ?? ()
这并不完全有用。
这是为什么呢? 有没有办法得到更有用的东西? 当这是我得到的回溯时发生错误时,尝试弄清楚一个复杂的多线程程序在做什么绝对是痛苦的。
我在使用 MinGW 64 时遇到了同样的问题。使用编译器开关-g3 -og终于很好地展示了所有的回溯。
原因可能是 gdb 有一个"当前"线程的概念,恕我直言,它是随机选择的。
您可以通过发出 gdb 命令 info threads
来查看程序当前正在执行的线程。将"当前"线程切换thread <num>
。尝试再次进行有意义的回溯。
还要确保
- 您的可执行文件是使用调试信息(
-g
)编译的, - GDB 能够处理用于将调试信息编码到可执行文件中的格式。您可能希望验证 gdb 是否可以在"main()"处设置断点,并且在那里的行为是否合理。
相关文章:
- 如何解释GDB中回溯的模板函数签名?
- 我们能否使 GDB 在回溯中显示非平凡的参数
- 多线程程序中的分段故障和gdb回溯上的不完整信息
- 如何解释GDB回溯以确定分段错误?
- 在远程嵌入式设备上使用核心文件的 GDB - 如何获取有关回溯的更多信息?
- GDB 回溯跟踪未显示正确的信息
- C 如何在Ubuntu中解释GDB回溯日志
- GDB 在使用核心转储时提供无用的回溯
- 使用gdb回溯调试MPI代码
- GDB 回溯跟踪不显示带有 cmake 的函数名称
- GDB 回溯而不停止
- 回溯c++代码gdb中的指针
- GDB核心回溯伪造地址
- 没有用户输入的gdb回溯
- 崩溃后在gdb回溯中检查C++对象
- gdb回溯没有显示main()的完整堆栈跟踪
- GDB 窗口 ??在回溯中
- 在回溯跟踪中格式化 GDB 模板参数
- 来自 ARM 皮层 M0 NRF51822 上的硬故障处理程序的 GDB 回溯
- gdb回溯不显示它来自的虚拟函数