Startseite > Paket- & Systemverwaltung > strace

strace: System Call- und Signalverfolgung

strace ist ein leistungsstarkes Diagnosewerkzeug unter Linux, das Systemaufrufe (syscalls) und empfangene Signale von Prozessen verfolgt und aufzeichnet. Es ermöglicht ein detailliertes Verständnis der Interaktion eines Programms mit dem Kernel und ist daher nützlich für Debugging, Leistungsanalyse und Sicherheitsaudits.

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


Gleiche Kategorie Befehle