Pregunta ¿Cómo rastrear el proceso del niño usando Strace?


solía strace para unirse a un proceso brevemente. 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, imprima el árbol de creaciones de hilos como pstree?


76
2017-10-29 15:09


origen


Respuestas:


strace -f para rastrear el proceso del niño que es fork()ed.


77
2018-06-11 07:36



Hay un script Perl llamado strace-graph. Aquí hay un versión de github. Está empacado con crosstool-ng versiones 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.


16
2018-05-15 18:33



No puedo ver una manera fácil:

Podrías usar el -ff opción con -o filename para producir archivos múltiples (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.


13
2018-04-29 20:05