Übersicht
strace verfolgt und gibt alle Systemaufrufe und Signalereignisse eines Prozesses in Echtzeit aus, entweder durch Ausführen eines bestimmten Befehls oder durch Anhängen an einen bereits laufenden Prozess. Dies ist unerlässlich, um das Low-Level-Verhalten eines Programms zu verstehen, einschließlich Datei-I/O, Netzwerkkommunikation und Speicherverwaltung.
Hauptfunktionen
- Verfolgung von Systemaufrufen und Signalen eines Prozesses
- Anzeige von Argumenten, Rückgabewerten und Fehlercodes für jeden Aufruf
- Anhängen an laufende Prozesse zur Verfolgung
- Gemeinsame Verfolgung von Kindprozessen
- Filtern bestimmter Systemaufrufe oder Signale
Wichtige Optionen
strace bietet verschiedene Optionen zur detaillierten Steuerung der Verfolgungsmethode und des Ausgabeformats.
Grundlegende Verfolgungsoptionen
Ausgabesteuerung
Filterung
Erzeugter Befehl:
Kombinieren Sie die Befehle.
Beschreibung:
`strace` Führen Sie den Befehl aus.
Kombinieren Sie diese Optionen und führen Sie die Befehle virtuell zusammen mit der KI aus.
Anwendungsbeispiele
Verschiedene Anwendungsbeispiele für die Verwendung von strace.
Einfache Befehlsverfolgung
strace ls
Verfolgt die Systemaufrufe des Befehls `ls`.
Verfolgungsergebnisse in Datei speichern
strace -o date_trace.log date
Speichert die Systemaufrufe des Befehls `date` in der Datei `date_trace.log`.
Verfolgung eines laufenden Prozesses
strace -p 12345
Hängt sich an einen Prozess mit der PID 12345 an, um Systemaufrufe zu verfolgen. (Ersetzen Sie die PID durch die tatsächliche Prozess-ID.)
Kindprozesse mitverfolgen
strace -f bash -c "echo Hello, strace!"
Verfolgt die Systemaufrufe von `bash` und `echo`, wenn der Befehl `echo` in der `bash`-Shell ausgeführt wird.
Nur bestimmte Systemaufrufe filtern
strace -e trace=open,read,write cat /etc/hosts
Verfolgt, ob der Befehl `cat /etc/hosts` die Systemaufrufe `open`, `read`, `write` verwendet.
Dauer von Systemaufrufen prüfen
strace -T ls
Zeigt die für jeden Systemaufruf aufgewendete Zeit an.
Installation
strace ist möglicherweise nicht auf den meisten Linux-Distributionen standardmäßig enthalten. Sie können es mit den folgenden Befehlen installieren.
Debian/Ubuntu
sudo apt update && sudo apt install strace
Installiert mit dem APT-Paketmanager.
CentOS/RHEL 7
sudo yum install strace
Installiert mit dem YUM-Paketmanager.
Fedora/RHEL 8+
sudo dnf install strace
Installiert mit dem DNF-Paketmanager.
Tipps & Hinweise
strace ist leistungsstark, aber es gibt einige Dinge zu beachten.
Leistungsauswirkungen
Da strace Systemaufrufe von Prozessen abfängt, kann es die Leistung des verfolgten Programms erheblich beeinträchtigen, insbesondere bei E/A-intensiven Programmen. Seien Sie vorsichtig bei der Verwendung in Produktionsumgebungen.
Ausgabeinterpretation
Die Ausgabe von strace kann sehr umfangreich sein. Es ist ratsam, die benötigten Informationen zu filtern (-e) oder zur Analyse in eine Datei zu speichern (-o). Detaillierte Informationen zu bestimmten Systemaufrufen finden Sie mit dem Befehl `man 2 <syscall_name>`.
Berechtigungen
Um Prozesse anderer Benutzer zu verfolgen oder Systemaktivitäten im Allgemeinen zu verfolgen, sind `root`-Berechtigungen erforderlich.
Unterschied zu Debugging-Tools
strace arbeitet auf Systemaufrufebene und kann, im Gegensatz zu Debuggern wie `gdb`, nicht direkt Variablen oder Funktionsaufrufe innerhalb eines Programms manipulieren oder Stack-Traces anzeigen. Beide Werkzeuge können sich ergänzen.