GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo rastrear el proceso secundario usando strace?

strace -f para rastrear el proceso secundario que es fork() ed.


Hay un script de perl llamado strace-graph . Aquí hay una versión de github. Está empaquetado con crosstool-ng versiones de compiladores. A mí me funciona incluso cuando se usa multiplataforma.

Caja ARM Linux.

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

X86_64 Caja Linux.

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


No puedo ver una manera fácil:

Podrías usar el -ff opción con -o filename para producir varios archivos (uno por pid).

por ejemplo:

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

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


Linux
  1. ¿Cómo matar un proceso en Linux usando el comando?

  2. ¿Cómo hacer que el proceso hijo muera después de que el padre salga?

  3. ¿Cómo encontrar todos los procesos secundarios?

  4. ¿Cómo obtener el valor de retorno de CHILD PROCESS?

  5. ¿Cómo eliminar un proceso secundario después de un tiempo de espera determinado en Bash?

Cómo matar un proceso en Linux

Cómo rastrear la ejecución del programa usando el comando Strace de Linux

Cómo mostrar la información del proceso usando Procs en Linux

Cómo procesar imágenes por lotes usando Converseen en Ubuntu 20.04

Cómo matar procesos en Linux usando kill, killall y pkill

Cómo rastrear y rastrear un proceso de Linux