How do I get the backtrace for all the threads in GDB?

246.9k Views Asked by At

Is there an equivalent command in GDB to that of WinDbg's !process 0 7?

I want to extract all the threads in a dump file along with their backtraces in GDB. info threads doesn't output the stack traces. So, is there a command that does?

4

There are 4 best solutions below

3
Employed Russian On

Is there a command that does?

thread apply all where
5
Sharad On

Generally, the backtrace is used to get the stack of the current thread, but if there is a necessity to get the stack trace of all the threads, use the following command.

thread apply all bt
0
diviquery On

When debugging with several threads, it is also useful to switch to a particular thread number and get the backtrace for that thread only.

From the GNU GDB threads documentation

For debugging purposes, GDB associates its own thread number--a small integer assigned in thread-creation order--with each thread in your program.

Usage:

info threads

Then identify the thread that you want to look at.

thread <thread_id>

Finally, use backtrace for just that thread:

bt
1
EricRen On

If your process is running:

pstack $pid