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?


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

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

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.