strace
Zeigt jeden Systemaufruf eines Programms mit Argumenten und Rückgabewert. Beantwortet die Frage "welche Konfigurationsdatei liest es eigentlich?" in zehn Sekunden statt nach einer Stunde Quellcode lesen.
Baut auf ptrace auf, derselben Kernel-Schnittstelle, die auch Debugger nutzen. Nützliche Varianten: strace -f folgt Kindprozessen, -p PID klinkt sich in ein bereits laufendes Programm ein, -e trace=openat,stat filtert das Rauschen heraus, -c liefert eine Zusammenfassung der Zeit pro Aufruf, und -o datei schreibt die Ausgabe in eine Datei. Klassische Einsatzfälle: die fehlende Datei hinter einem "no such file"-Fehler finden, sehen, mit welchem Socket sich ein Programm verbindet, oder herausfinden, wo es hängen bleibt. Der Overhead ist erheblich — jeder Aufruf stoppt den Prozess — daher kein Werkzeug für die Produktion. Pendants: ltrace für Bibliotheksaufrufe, dtruss unter macOS.