如何获取GDB中所有线程的回溯?

时间:2013-08-22 22:27:55

标签: multithreading debugging gdb backtrace

GDB中是否有与Windbg的“!process 0 7”相同的命令?

我想在转储文件中提取所有线程以及它们在GDB中的回溯。 “info threads”不输出堆栈跟踪。那么,有没有命令呢?

3 个答案:

答案 0 :(得分:187)

通常,回溯用于给出当前线程的堆栈,但是如果有必要给出所有线程的堆栈跟踪,请使用以下命令

  

线程全部应用bt

答案 1 :(得分:48)

  

有没有命令呢?

thread apply all where

答案 2 :(得分:1)

在使用多个线程进行调试时,切换到特定线程编号并仅获取该线程的回溯也很有用。

来自 GNU GDB 线程 documentation

<块引用>

出于调试目的,GDB 将其自己的线程编号(按线程创建顺序分配的小整数)与程序中的每个线程相关联。

用法:

info threads

然后确定您要查看的线程。

thread <thread_id>

最后,只对那个线程使用回溯:

bt