132 votes

Comment suivre le processus enfant à l'aide de strace?

J'ai utilisé strace pour attacher à un processus brièvement. Le processus a créé 90 threads. Lorsque j'ai trouvé le fautif thread, j'ai dû péniblement à la recherche pour le parent fil, puis les grands-parents de fil, et ainsi de suite jusqu'à la racine du processus. Est-il un truc ou un outil pour déterminer rapidement le thread qui a créé une autre? Ou, mieux encore, d'imprimer l'arbre de fil créations comme pstree?

Merci.

162voto

Je Rog Points 1479

strace -f de retracer le processus enfant que l' fork()ed.

28voto

stackmate Points 261

Je ne peux pas voir une façon très simple:

Vous pouvez utiliser l' -ff option avec -o filename pour produire de multiples fichiers (un par pid).

par exemple:

strace -o process_dump -ff ./executable
grep clone process_dump*

qui peut vous aider à voir quel est le parent qui a créé ce qui. Peut-être que ce serait vous aider - au moins, puis, vous pourriez rechercher vers l'arrière.

23voto

artless noise Points 7110

Il y a un script perl appelé strace-graph. Voici une version de gitorious. Il est emballé avec crosstool-ng versions de compilateurs. Il fonctionne pour moi même utilisé de la croix-plate-forme.

BRAS de Linux.

$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133

Linux X86_64 boîte.

$ ./strace-graph /srv/tftp/app.trc 
 (anon)
  +-- touch /tmp/ppp.sleep
  +-- killall -HUP pppd
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 70%
  +-- amixer set Speaker 50%
  +-- amixer set Speaker 70%
  `-- amixer set Speaker 50%

La sortie peut être utilisée pour aider à naviguer dans le principal journal de suivi.

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