Accueil·Commandes du terminal

strace

Processus et système

Syntaxe

strace [-f] -p <pid>

Affiche chaque appel systeme d'un processus, ce qui montre ou il se bloque ; la sortie part sur stderr, redirigez-la avec `2>&1`, il faut le droit ptrace (generalement sudo) et cela n'existe que sous Linux (macOS a dtruss).

Options courantes

OptionSignification
-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.

Exemples

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.

Ce qui tourne et ce qui mange la machine. Identifier vient avant tuer.

Comment lire

  • Les crochets [ ] marquent une partie facultative.
  • Les points de suspension … signifient qu’on peut en mettre plusieurs.
  • Les options sont sensibles à la casse : sur certaines commandes, -r et -R ne font pas la même chose.

Questions fréquentes

Q. Que fait strace ?

Affiche chaque appel systeme d'un processus, ce qui montre ou il se bloque ; la sortie part sur stderr, redirigez-la avec `2>&1`, il faut le droit ptrace (generalement sudo) et cela n'existe que sous Linux (macOS a dtruss).

Q. Comment l’écrire ?

strace [-f] -p <pid> — les crochets marquent ce qui est facultatif.

Q. Combien d’options valent la peine ?

Il y en a 7 ici ; la liste complète est dans man strace. Cette commande relève de Processus et système.

Commandes liées

page man: man strace