How do I get the backtrace for all the threads in GDB?
MultithreadingDebuggingGdbBacktraceMultithreading Problem Overview
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?
Multithreading Solutions
Solution 1 - Multithreading
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
Solution 2 - Multithreading
> Is there a command that does?
thread apply all where
Solution 3 - Multithreading
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
Solution 4 - Multithreading
If your process is running:
pstack $pid