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?

srikantha ks
la source
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
Sharad
la source
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
59

Y a-t-il une commande qui le fait?

thread apply all where
Employé russe
la source
4
Un synonyme de backtrace.
Daniel Farrell