Bagaimana cara mendapatkan backtrace untuk semua utas di GDB?

151

Apakah ada perintah yang setara di GDB dengan perintah "! Proses 0 7" WinDbg?

Saya ingin mengekstrak semua utas dalam file dump bersama dengan backtraces mereka di GDB. "info threads" tidak menampilkan jejak stack. Jadi, adakah perintah yang bisa?

srikantha ks
sumber
13
Perintah yang sesuai untuk LLDB adalahbt all - jika seseorang menemukan ini melalui Google (yang berpikir GDB == LLDB).
kennytm
Dengan python, karya-karya berikut "(gdb) python untuk utas di gdb.selected_inferior (). Threads (): thread.switch (); print (thread.num); gdb.execute ('where')"
Talespin_Kit

Jawaban:

244

Secara umum, backtrace digunakan untuk mendapatkan stack dari thread saat ini, tetapi jika ada kebutuhan untuk mendapatkan jejak stack dari semua thread, gunakan perintah berikut.

thread apply all bt
Sharad
sumber
12
Untuk menyimpan hasil ke file:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Doomsday
1
Anda dapat mempersingkat ini ket a a bt
qbolec
59

Apakah ada perintah yang bisa?

thread apply all where
Mempekerjakan bahasa Rusia
sumber
4
Sinonim untuk backtrace.
Daniel Farrell