GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So verwenden Sie den Linux-Strace-Befehl

In diesem Artikel erfahren Sie, wie Sie den Linux Strace-Befehl verwenden. Strace ist ein leistungsstarkes Befehlszeilentool zum Debuggen und Beheben von Fehlern in Programmen unter Linux OS. Es erfasst und zeichnet alle von einem Prozess getätigten Systemaufrufe und die von dem Prozess empfangenen Signale auf.

Es zeigt den Namen jedes Systemaufrufs zusammen mit seinen in Klammern eingeschlossenen Argumenten und seinem Rückgabewert an den Standardfehler an; Sie können es optional auch in eine Datei umleiten.

Normalerweise ist strace standardmäßig verfügbar, wenn es nicht in Ihrem System vorhanden ist, installieren Sie strace mit dem folgenden Befehl:

dnf install strace

Sie können entweder einen Befehl mit strace ausführen oder ihm mit der Option -p eine PID übergeben, wie in den folgenden Beispielen:

Aufrufe des Linux-Befehlssystems verfolgen:

In diesem Beispiel führen wir einfach einen Befehl „df -h“ gefolgt von strace aus, um Systemaufrufe für den Befehl df -h zu verfolgen.

strace df -h

Die Ausgabe sieht folgendermaßen aus:

Aus der obigen Ausgabe können Sie verschiedene Arten von Systemaufrufen sehen, die vom Befehl df -h ausgeführt wurden, zum Beispiel „open(“/etc/ld.so.cache“, O_RDONLY|O_CLOEXEC) =3″

Wo,

  • open – ist die Art des Systemaufrufs
  • (“/etc/ld.so.cache”, O_RDONLY|O_CLOEXEC) – Systemaufrufargument
  • 3 – Rückgabewert des Systemaufrufs

Linux-Prozess-PID verfolgen:

Wenn ein Prozess bereits läuft, können Sie ihn verfolgen, indem Sie einfach seine PID an strace übergeben; Dadurch wird Ihr Bildschirm mit einer fortlaufenden Ausgabe gefüllt, die zeigt, dass Systemaufrufe vom Prozess ausgeführt werden. Um ihn zu beenden, drücken Sie STRG + C.

strace -p 7302

Um eine Zusammenfassung der Gesamtzeit, Aufrufe und Fehler eines Systemaufrufs zu erhalten, verwenden Sie das Flag -c wie unten gezeigt;

strace -pc 7583

Anweisungszeiger während Systemaufruf drucken:

Das Flag -i zeigt den Anweisungszeiger bei jedem Systemaufruf des Programms an.

strace -i df -h

Zeit pro Trace-Ausgabezeile anzeigen:

Sie können auch die aktuelle Zeit für jede Zeile in der Trace-Ausgabe ausgeben, indem Sie das Flag -t übergeben.

strace -t df -h

In Systemaufrufen verbrachte Befehlszeit drucken:

Um den Zeitunterschied zwischen dem Beginn und dem Ende jedes Systemaufrufs eines Programms anzuzeigen, verwenden Sie die Option -T.

strace -T df -h

Nur bestimmte Systemaufrufe verfolgen:

Im folgenden Befehl ist „trace=write“ als qualifizierender Ausdruck bekannt, wobei „trace“ ein Qualifizierer ist (andere sind signal, abbrev, verbose, raw, read oder write) und „write“ der Wert des Qualifizierers ist.

Der folgende Befehl zeigt tatsächlich die Systemaufrufe zum Drucken der Ausgabe von df -h auf der Standardausgabe.

strace -e trace=write df -h

Einige zusätzliche Befehle zum Trace-Qualifizierer lauten wie folgt:

strace -e trace=open,close df -h
strace -e trace=open,close,read,write df -h
strace -e trace=all df -h

Systemaufrufe basierend auf einer bestimmten Bedingung verfolgen:

Wir werden sehen, wie man Systemaufrufe verfolgt, die sich auf eine bestimmte Klasse von Ereignissen beziehen. Mit dem folgenden Befehl können alle Systemaufrufe verfolgt werden, die das Prozessmanagement betreffen.

strace -q -e trace=process df -h

Verwenden Sie als Nächstes den folgenden Befehl, um alle Systemaufrufe zu verfolgen, die einen Dateinamen als Argument annehmen:

strace -q  -e trace=file df -h

In ähnlicher Weise können Sie alle Netzwerk-, Speicher- und Signal-bezogenen Systemaufrufe mit den folgenden Befehlen verfolgen:

strace -q -e trace=memory df -h
strace -e trace=network df -h
strace -e trace=signal df -h

Trace-Ausgabe in Datei umleiten:

Verwenden Sie die Option -o, um die an Standardfehler gesendeten Ablaufverfolgungsmeldungen in eine Datei zu schreiben. Das bedeutet, dass nur die Befehlsausgabe wie unten gezeigt auf dem Bildschirm gedruckt wird.

strace -o strace_message.txt df -h

Alle Systemaufrufe wurden in die Datei strace_message.txt geschrieben. Verwenden Sie den cat-Befehl, um die Systemaufrufe anzuzeigen.

cat strace_message.txt

Debugausgabe von Strace anzeigen:

Um Debugging-Informationen für das Strace-Tool anzuzeigen, verwenden Sie das Flag -d.

strace -d df -h

Zusammenfassend lässt sich sagen, dass strace ein Werkzeug zur Diagnose der Ursache von Programmfehlern ist. Es ist ein leistungsstarkes Tool zum Debuggen und zur Fehlerbehebung. Es ist praktisch nützlich für erfahrene Systemadministratoren, Programmierer und Hacker.


Linux
  1. So verwenden Sie den Linux-ftp-Befehl

  2. So verwenden Sie den Disown-Befehl unter Linux

  3. So verwenden Sie den Su-Befehl unter Linux

  4. So verwenden Sie den Linux-Bildschirmbefehl

  5. So verwenden Sie die Befehle strace und ltrace unter Linux

So verwenden Sie den Befehl zum Herunterfahren von Linux

So verwenden Sie grep unter Linux

So verwenden Sie den Mkdir-Befehl unter Linux

So verwenden Sie den fd-Befehl auf einem Linux-System

So verwenden Sie den Jobs-Befehl unter Linux

So verwenden Sie den Bildschirmbefehl unter Linux