Comment obtenir la trace de tous les threads dans GDB?


151

Existe-t-il une commande équivalente dans GDB à celle du "! Process 0 7" de WinDbg?

Je veux extraire tous les threads dans un fichier de vidage avec leurs backtraces dans GDB. "info threads" ne produit pas les traces de la pile. Alors, y a-t-il une commande qui le fait?


13
La commande correspondante pour LLDB estbt all - au cas où quelqu'un trouverait cela via Google (qui pense GDB == LLDB).
kennytm

Avec python, les travaux suivants "(gdb) python pour thread dans gdb.selected_inferior (). Threads (): thread.switch (); print (thread.num); gdb.execute ('where')"
Talespin_Kit

Réponses:


244

Généralement, la trace arrière est utilisée pour obtenir la pile du thread actuel, mais s'il est nécessaire d'obtenir la trace de la pile de tous les threads, utilisez la commande suivante.

thread apply all bt

12
Pour enregistrer la sortie dans un fichier:gdb <binary> <coredump> -ex "thread apply all bt" -ex "quit" > output.log
Doomsday

1
Vous pouvez raccourcir ceci àt a a bt
qbolec

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.