Comment le pstack de commande de travail?
Je suis curieux de savoir comment le pstack commande imprime la trace de la pile de tous les threads s'exécutant sous le PID?
Il doit être quelque peu différente de la façon de gdb n'depuis, le processus s'exécute à l'intérieur de la gdb environnement, mais pstack est exécutée après l'exécution du processus.
OriginalL'auteur g__k | 2010-07-07
Vous devez vous connecter pour publier un commentaire.
C'est la même idée générale que gdb. pstack utilise ptrace, qui permet à un processus externe à joindre à un pid et imprimer les informations (pile est connu par les registres actuels).
Si vous voulez savoir exactement comment c'est fait, regardez pour plus d'informations sur
ptrace
.Aussi, les processus n'ont pas vraiment courir "à l'intérieur de la gdb". Vous pouvez joindre gdb à un processus en cours d'exécution sans trop de difficulté en cours d'exécution
gdb executable pid
.C'est
strace
qui prend soin de tracer les appels système.ptrace
peut faire beaucoup plus linux.die.net/man/2/ptrace - c'est une façon de fouiller un autre processus. Il peut obtenir/définir les registres, les plages de mémoire, le pointeur d'instruction de l'étranger processus et bien plus encore. Afin de fouiller la pile est presque aussi simple que d'obtenir la SP et à la lecture (en bas) de la mémoire.OriginalL'auteur viraptor
pstack d'impression de production similaire comme cat /proc/"pid"/tâches/*/pile de sorte qu'il est probable que la lecture de l'procfs plutôt que d'utiliser le ptrace.
OriginalL'auteur Shashank Kukreti