Início·Comandos de terminal

strace

Processos e sistema

Uso

strace [-f] -p <pid>

Imprime cada chamada de sistema que um processo faz, e assim voce ve onde ele travou; a saida vai para stderr, redirecione com `2>&1`, precisa de permissao ptrace (geralmente sudo) e existe apenas no Linux (macOS tem dtruss).

Opções comuns

OpçãoSignificado
-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.

Exemplos

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.

O que está rodando e o que está comendo a máquina. Identificar vem antes de matar.

Como ler

  • Os colchetes [ ] marcam uma parte que você pode omitir.
  • As reticências … indicam que você pode listar vários.
  • As opções diferenciam maiúsculas: em alguns comandos -r e -R fazem coisas diferentes.

Perguntas

Q. O que strace faz?

Imprime cada chamada de sistema que um processo faz, e assim voce ve onde ele travou; a saida vai para stderr, redirecione com `2>&1`, precisa de permissao ptrace (geralmente sudo) e existe apenas no Linux (macOS tem dtruss).

Q. Como se digita?

strace [-f] -p <pid> — os colchetes marcam o que você pode omitir.

Q. Quantas opções vale a pena saber?

Aqui estão 7; a lista completa está em man strace. Este comando fica em Processos e sistema.

Comandos relacionados

página man: man strace