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

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

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

202418 次浏览

有这样的命令吗?

thread apply all where

通常,反向跟踪用于获取当前线程的堆栈,但如果有必要获得所有线程的堆栈跟踪,请使用以下命令。

thread apply all bt

在使用多个线程进行调试时,切换到特定的线程号并仅获取该线程的反向跟踪也是有用的。

从GNU GDB线程文档

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

用法:

info threads

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

thread <thread_id>

最后,对该线程使用backtrace:

bt

如果你的进程正在运行:

pstack $pid