Làm cách nào để có được backtrace cho tất cả các luồng trong GDB?


151

Có một lệnh tương đương trong GDB với lệnh "! Process 0 7" của WinDbg không?

Tôi muốn trích xuất tất cả các luồng trong một tệp kết xuất cùng với backtraces của chúng trong GDB. "Chủ đề thông tin" không xuất ra dấu vết ngăn xếp. Vì vậy, có một lệnh mà không?


13
Lệnh tương ứng cho LLDB bt all - trong trường hợp ai đó tìm thấy điều này thông qua Google (người nghĩ rằng GDB == LLDB).
kennytm

Với python các công việc sau "(gdb) python cho thread gdb.selected_inferior () đề (): thread.switch (); in (thread.num); gdb.execute ( 'nơi')."
Talespin_Kit

Câu trả lời:


243

Nói chung, backtrace được sử dụng để lấy stack của luồng hiện tại, nhưng nếu có nhu cầu lấy dấu vết stack của tất cả các luồng, hãy sử dụng lệnh sau.

thread apply all bt

12
Để lưu kết quả đầu ra vào một tệp:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Ngày tận thế

1
Bạn có thể rút ngắn điều này thànht a a bt
qbolec

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.