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?
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?
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
gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
–
Edana t a a bt
–
Brunn gdb <binary> <coredump> -ex "thread apply all bt" -ex "detach" -ex "quit" > output.log
, to avoid a question from gdb that blocks the command waiting for input. –
Sangfroid thread apply [threadno] [all] args
, where [threadno]
can also be a space-separated list of thread identifiers (e.g. 2 3 4
), or a range (e.g. 2-6
). –
Muss --batch
. –
Introspect Is there a command that does?
thread apply all where
backtrace
. –
Inconsonant info gdb where
: The names 'where' and 'info stack' (abbreviated 'info s') are additional aliases for 'backtrace'. –
Introspect 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
If your process is running:
pstack $pid
© 2022 - 2024 — McMap. All rights reserved.
bt all
— in case someone found this via Google (who thinks GDB == LLDB). – Devanagari