Solía strace
adjuntar 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
?
linux
multithreading
strace
proyectos
fuente
fuente
Respuestas:
strace -f
para rastrear el proceso hijo que esfork()
ed.fuente
No veo una forma fácil:
Puede usar la
-ff
opción con-o filename
para producir varios archivos (uno por pid).p.ej:
eso le ayudaría a ver qué padre creó qué. Tal vez eso te ayude, al menos entonces podrías buscar hacia atrás.
fuente
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.
Caja Linux X86_64.
La salida se puede utilizar para ayudar a navegar por el registro de seguimiento principal.
fuente
Para capturar tráfico para un solo proceso, puede usarlo
strace
, como sugirió @stackmate.o enviarlo a un archivo.
-f
para todos los procesos bifurcados,-s
para imprimir el tamaño de la cadena y-o
para volcar la salida a un archivo.fuente