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?


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

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

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.