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

MultithreadingDebuggingGdbBacktrace

Multithreading 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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
Questionsrikantha ksView Question on Stackoverflow
Solution 1 - MultithreadingSharadView Answer on Stackoverflow
Solution 2 - MultithreadingEmployed RussianView Answer on Stackoverflow
Solution 3 - MultithreadingdiviqueryView Answer on Stackoverflow
Solution 4 - MultithreadingEricRenView Answer on Stackoverflow