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
| Option | Bedeutung |
|---|---|
| -p <pid> | Attach to a process that is already running. |
| -f | Follow child processes and threads too. |
| -e trace=openat,connect | Only the syscalls you care about. |
| -s 200 | Show 200 characters of each string instead of the default 32. |
| -o <file> | Write to a file, since output goes to stderr. |
| -c | A summary count per syscall instead of every line. |
| -tt | Timestamps with microseconds, to see where the time went. |
Beispiele
strace -f -e trace=openat ./app 2>&1 | grep configFind which config file it actually reads.
sudo strace -p 1234 -s 200See what a stuck process is waiting on.
sudo dtruss -p 1234The 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