195

GDB 中是否有与 WinDbg 等效的命令!process 0 7

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

4

4 回答 4

324

一般使用backtrace来获取当前线程的堆栈,但是如果有必要获取所有线程的堆栈跟踪,使用下面的命令。

thread apply all bt
于 2014-04-10T06:36:25.340 回答
62

有没有这样的命令?

thread apply all where
于 2013-08-22T22:46:56.887 回答
8

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

来自 GNU GDB 线程文档

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

用法:

info threads

然后确定要查看的线程。

thread <thread_id>

最后,仅对该线程使用回溯:

bt
于 2021-05-18T08:23:01.733 回答
0

如果您的进程正在运行:

pstack $pid
于 2022-02-24T11:52:25.117 回答