199 votes

Comment puis-je obtenir le backtrace de tous les threads dans GDB ?

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

Je veux extraire tous les threads dans un fichier de vidage avec leurs backtraces dans GDB. info threads n'affiche pas les traces de la pile. Existe-t-il une commande qui le fasse ?

329voto

Sharad Points 3315

En général, le backtrace est utilisé 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

62voto

Employed Russian Points 50479

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

thread apply all where

11voto

diviquery Points 25

Lorsque vous déboguez avec plusieurs threads, il est également utile de passer à un numéro de thread particulier et d'obtenir le backtrace pour ce thread uniquement.

À partir des fils de discussion de GNU GDB documentation

À des fins de débogage, GDB associe son propre numéro de thread - un petit nombre entier attribué dans l'ordre de création des threads - à chaque thread de votre programme.

Utilisation :

info threads

Identifiez ensuite le fil que vous voulez regarder.

thread <thread_id>

Enfin, utilisez le backtrace pour ce seul thread :

bt

0voto

EricRen Points 11

Si votre processus est en cours :

pstack $pid

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X