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

104

Solía straceadjuntar a un proceso brevemente. El proceso creó 90 hilos. Cuando encontré el hilo ofensivo, tuve que buscar tediosamente el hilo principal, luego el hilo abuelo, y así sucesivamente hasta el proceso raíz.

¿Existe algún truco o herramienta para descubrir rápidamente qué hilo creó otro? O mejor aún, imprimir el árbol de las creaciones de hilo como pstree?

proyectos
fuente
Parece que la respuesta de @JeRog debería aceptarse.
jww

Respuestas:

119

strace -fpara rastrear el proceso hijo que es fork()ed.

Je Rog
fuente
19

No veo una forma fácil:

Puede usar la -ffopción con -o filenamepara producir varios archivos (uno por pid).

p.ej:

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

eso le ayudaría a ver qué padre creó qué. Tal vez eso te ayude, al menos entonces podrías buscar hacia atrás.

apilado
fuente
18

Hay un script de perl llamado strace-graph. Aquí hay una versión de github . Está empaquetado con versiones de compiladores crosstool-ng . Me funciona incluso si usé multiplataforma.

Caja ARM Linux.

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

Caja Linux X86_64.

$ ./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 salida se puede utilizar para ayudar a navegar por el registro de seguimiento principal.

ruido ingenuo
fuente
1
muy bonito, esto es casi exactamente algo que quería durante al menos varios días. sorprendentemente, incluso puedo verlo en mi / usr / share / doc / strace / examples /.
mykhal
0

Para capturar tráfico para un solo proceso, puede usarlo strace, como sugirió @stackmate.

strace -f -e trace=network -s 10000 -p <PID>;

o enviarlo a un archivo.

strace -f -e trace=network -s 10000 -o dumpfile -p <PID>

-fpara todos los procesos bifurcados, -spara imprimir el tamaño de la cadena y -opara volcar la salida a un archivo.

Shaboti
fuente