¿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?


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

Respuestas:


119

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


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.


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.


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.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.