Start·Terminal-Befehle

strace

Prozesse und System

Aufruf

strace [-f] -p <pid>

Gibt jeden Systemaufruf eines Prozesses aus, sodass man sieht, wo er hangt; die Ausgabe geht auf stderr, also mit `2>&1` umleiten, es braucht ptrace-Rechte (meist sudo) und gibt es nur unter Linux (macOS: dtruss).

Häufige Optionen

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

Beispiele

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.

Was läuft und was die Maschine frisst. Erst herausfinden, was es ist, dann beenden.

So liest man das

  • Eckige Klammern [ ] markieren einen Teil, den man weglassen kann.
  • Drei Punkte … heißen: mehrere sind erlaubt.
  • Optionen achten auf Groß- und Kleinschreibung — bei manchen Befehlen sind -r und -R verschieden.

Häufige Fragen

Q. Was macht strace?

Gibt jeden Systemaufruf eines Prozesses aus, sodass man sieht, wo er hangt; die Ausgabe geht auf stderr, also mit `2>&1` umleiten, es braucht ptrace-Rechte (meist sudo) und gibt es nur unter Linux (macOS: dtruss).

Q. Wie gibt man ihn ein?

strace [-f] -p <pid> — eckige Klammern markieren, was wegfallen darf.

Q. Wie viele Optionen lohnen sich?

Hier stehen 7; die vollständige Liste steht in man strace. Der Befehl gehört zu Prozesse und System.

Verwandte Befehle

man-Seite: man strace