linux - ¿Cómo rastrear el proceso del niño usando Strace?
multithreading (3)
Hay un script de perl llamado strace-graph
. Aquí hay una versión de github . Está empaquetado con versiones crosstool-ng de compiladores. Funciona para mí, incluso se usa plataforma cruzada.
ARM caja de Linux.
$ ./strace -f -q -s 100 -o app.trc -p 449
$ tftp -pr app.trc 172.0.0.133
X86_64 Linux box.
$ ./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%
El resultado se puede usar para ayudar a navegar el registro de seguimiento principal.
strace
para strace
brevemente a un proceso. El proceso creó 90 hilos. Cuando encontré el hilo ofensivo, tuve que buscar tediosamente el hilo principal, luego el hilo de los abuelos, y así sucesivamente hasta llegar al proceso raíz.
¿Hay algún truco o herramienta para descubrir rápidamente qué hilo creó otro? O mejor aún, ¿imprime el árbol de creaciones de hilos como pstree
?
No puedo ver una manera fácil:
Puede usar la opción -ff
con -o filename
para producir múltiples archivos (uno por pid).
p.ej:
strace -o process_dump -ff ./executable
grep clone process_dump*
eso te ayudaría a ver qué padre creó qué. Quizás eso te ayude, al menos entonces podrías buscar hacia atrás.
strace -f
para rastrear el proceso hijo que es fork()
ed.