linux multithreading strace

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.