Inicio·Comandos de terminal

strace

Procesos y sistema

Uso

strace [-f] -p <pid>

Imprime cada llamada al sistema que hace un proceso, y asi ves donde se atasca; la salida va a stderr, redirigela con `2>&1`, necesita permiso ptrace (normalmente sudo) y solo existe en Linux (macOS tiene dtruss).

Opciones habituales

OpciónSignificado
-p <pid>Attach to a process that is already running.
-fFollow child processes and threads too.
-e trace=openat,connectOnly the syscalls you care about.
-s 200Show 200 characters of each string instead of the default 32.
-o <file>Write to a file, since output goes to stderr.
-cA summary count per syscall instead of every line.
-ttTimestamps with microseconds, to see where the time went.

Ejemplos

strace -f -e trace=openat ./app 2>&1 | grep config

Find which config file it actually reads.

sudo strace -p 1234 -s 200

See what a stuck process is waiting on.

sudo dtruss -p 1234

The macOS counterpart; needs elevated privileges and often SIP changes.

Qué se está ejecutando y qué se come la máquina. Identificarlo va antes de matarlo.

Cómo leerlo

  • Los corchetes [ ] marcan una parte que puedes omitir.
  • Los puntos suspensivos … indican que puedes poner varios.
  • Las opciones distinguen mayúsculas: en algunos comandos -r y -R no hacen lo mismo.

Preguntas

Q. ¿Qué hace strace?

Imprime cada llamada al sistema que hace un proceso, y asi ves donde se atasca; la salida va a stderr, redirigela con `2>&1`, necesita permiso ptrace (normalmente sudo) y solo existe en Linux (macOS tiene dtruss).

Q. ¿Cómo se escribe?

strace [-f] -p <pid> — los corchetes marcan lo que puedes omitir.

Q. ¿Cuántas opciones vale la pena saber?

Aquí van 7; la lista completa está en man strace. Este comando está en Procesos y sistema.

Comandos relacionados

página man: man strace