Como obtenho o backtrace para todos os threads no GDB?


151

Existe um comando equivalente no GDB ao comando "! Process 0 7" do WinDbg?

Eu quero extrair todos os threads em um arquivo de despejo, juntamente com seus backtraces no GDB. "info threads" não gera os rastreamentos da pilha. Então, existe um comando que faz?


13
O comando correspondente para o LLDB ébt all - caso alguém o encontre pelo Google (que pensa GDB == LLDB).
Kennytm 26/10/16

Com python, o seguinte funciona "(gdb) python para thread em gdb.selected_inferior (). Threads (): thread.switch (); print (thread.num); gdb.execute ('where')"
Talespin_Kit em

Respostas:


244

Geralmente, o backtrace é usado para obter a pilha do encadeamento atual, mas se for necessário obter o rastreamento da pilha de todos os encadeamentos, use o seguinte comando.

thread apply all bt

12
Para salvar a saída em um arquivo:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Dia do juízo

1
Você pode encurtar isso parat a a bt
qbolec

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.