Come ottengo il backtrace per tutti i thread in GDB?


151

Esiste un comando equivalente in GDB a quello del "! Process 0 7" di WinDbg?

Voglio estrarre tutti i thread in un file di dump insieme ai loro backtrace in GDB. "info thread" non genera le tracce dello stack. Quindi, c'è un comando che lo fa?


13
Il comando corrispondente per LLDB èbt all - nel caso qualcuno lo abbia trovato tramite Google (chi pensa GDB == LLDB).
kennytm,

Con python il seguente funziona "(gdb) python per thread in gdb.selected_inferior (). Thread (): thread.switch (); print (thread.num); gdb.execute ('where')"
Talespin_Kit

Risposte:


244

In genere, il backtrace viene utilizzato per ottenere lo stack del thread corrente, ma se è necessario ottenere la traccia dello stack di tutti i thread, utilizzare il comando seguente.

thread apply all bt

12
Per salvare l'output in un file:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Doomsday

1
Puoi accorciare questo at a a bt
qbolec il

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.