example - how to use strace
¿Cómo se conecta Strace a un proceso que ya se está ejecutando? (2)
Sé que strace
usa ptrace
para hacer el trabajo,
pero necesita ejecutar el proceso de destino con TRACE_ME
en,
que no se aplican para el caso de un proceso ya en ejecución.
¿Cómo funciona en un proceso ya en ejecución?
Los detalles de ptrace()
son específicos del sistema operativo.
En Linux, un hijo puede solicitar ser rastreado por su padre con ptrace(PTRACE_TRACEME, ...)
; pero, como alternativa, un proceso puede unirse a otro proceso con ptrace(PTRACE_ATTACH, ...)
.
Consulte la página del manual de Linux ptrace(2)
(y, si realmente desea los detalles finos, la fuente de strace
y la fuente del kernel comenzando en kernel/ptrace.c
).
strace -p <PID>
----> Para adjuntar un proceso a strace . La opción "-p" es para PID del proceso.
strace -e trace=read,write -p <PID>
-> Con esto también puede rastrear un proceso / programa para un evento, como leer y escribir (en este ejemplo). Así que aquí se imprimirán todos los eventos que incluyan llamadas de sistema de lectura y escritura por el proceso.
Otros ejemplos similares
-e trace= network (Trace all the network related system calls.)
-e trace=signal (Trace all signal related system calls.)
-e trace=ipc (Trace all IPC related system calls.)
-e trace=desc (Trace all file descriptor related system calls.)
-e trace=memory (Trace all memory mapping related system calls.)
y muchos más..
trace es una de las muchas opciones que puede usar con la opción -e .
Presione Ctrl-C para abortar el trazado por strace.
Consulte la sección de AYUDA para obtener un breve resumen de strace escribiendo strace -h
y man page para obtener información detallada.
NOTA : Un proceso trazado se ejecuta lentamente.