Wie erhalte ich die Rückverfolgung für alle Threads in GDB?

151

Gibt es in GDB einen äquivalenten Befehl zu WinDbgs "! Process 0 7"?

Ich möchte alle Threads in einer Dump-Datei zusammen mit ihren Backtraces in GDB extrahieren. "info threads" gibt die Stack-Traces nicht aus. Gibt es einen Befehl, der dies tut?

srikantha ks
quelle
13
Der entsprechende Befehl für LLDB lautetbt all - falls jemand dies über Google gefunden hat (der GDB == LLDB denkt).
Kennytm
Mit Python funktioniert Folgendes: "(gdb) Python für Thread in gdb.selected_inferior (). Threads (): thread.switch (); print (thread.num); gdb.execute ('where')"
Talespin_Kit

Antworten:

243

Im Allgemeinen wird die Rückverfolgung verwendet, um den Stapel des aktuellen Threads abzurufen. Wenn jedoch die Stapelverfolgung aller Threads abgerufen werden muss, verwenden Sie den folgenden Befehl.

thread apply all bt
Scharade
quelle
12
So speichern Sie die Ausgabe in einer Datei:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Doomsday
1
Sie können dies auft a a bt
qbolec
59

Gibt es einen Befehl, der dies tut?

thread apply all where
Angestellt Russisch
quelle
4
Ein Synonym für backtrace.
Daniel Farrell