Strace ist ein sehr leistungsfähiges Debugging-Befehlszeilendienstprogramm, das bei der Fehlerbehebung hilft, indem es die Systemaufrufe und Signale des jeweiligen Programms überwacht. Falls wir keinen Quellcode zur Verfügung haben, kann strace verwendet werden, um zu analysieren, wie ein Programm mit dem System interagiert. In diesem Artikel werden wir einige wichtige Strace-Befehle zur Fehlersuche und zum Debuggen von Programmen und Prozessen in Linux besprechen.
Installation
Die Installation der strace Utility-Tools ist unkompliziert und einfach. Verwenden Sie den folgenden Befehl, um die Anwendung gemäß Ihrer Linux-Distribution zu installieren.
Debian/Ubuntu
$ sudo apt install strace
RedHat/CentOS
$ yum install strace
Überprüfen Sie die Installation, indem Sie den folgenden Befehl ausführen
$ strace -V
Ausgabe:
1.Linux-Befehlssystemaufrufe mit strace verfolgen
Strace ist hilfreich beim Verfolgen von Aufrufen des Linux-Befehlssystems. In diesem Beispiel ein einfacher Befehl pwd wird zum Tracing verwendet.
$ strace pwd
Ausgabe:
2. Ablaufprotokoll in eine Datei umleiten
Das Ablaufverfolgungsprotokoll für Systemaufrufe kann mithilfe des Befehls strace wie folgt in eine Datei umgeleitet werden:
$ strace -o pwd-log.txt pwd
Verwenden Sie den cat-Befehl, um den Inhalt der Datei wie folgt zu finden:
$ cat pwd-log.txt
3. Verwenden Sie strace, um eine Zusammenfassung der Systemaufrufe anstelle der regulären Ausgabe zu drucken.
Die Verwendung von strace mit der Option -c ermöglicht das Drucken der Protokollzusammenfassung. In diesem Beispiel wird eine Zusammenfassung des Linux-Befehls pwd präsentiert.
$ strace -c pwd
Ausgabe:
4. Verfolge bestimmte Systemaufrufe mit strace
Der Strace-Befehl mit der Option -e und dem Trace-Typ (Lesen, Schreiben) kann verwendet werden, um bestimmte Systemaufrufe zu verfolgen. In diesem Beispiel wird der Schreibsystemaufruf für den Befehl pwd.
verfolgt$ strace -e trace=write pwd
Ausgabe:
5. Strace-Befehl zum Drucken des Zeitstempels jedes Systemaufrufs.
Der Strace-Befehl mit der Option -r kann verwendet werden, um alle relativen Zeitstempel jedes Systemaufrufs auszudrucken.
$ strace -r pwd
Ausgabe:
6. Ablaufverfolgung mit Prozess-ID
Wenn bereits ein Prozess im System läuft, können die Systemaufrufe mithilfe des Befehls strace mit der Option -p zusammen mit der Prozess-ID verfolgt werden. In diesem Beispiel wird die Prozess-ID von nginx zum Tracing verwendet
Syntax
$ strace -p <process id>
$ strace -p 12842
Die Ablaufverfolgung kann durch Drücken von Strg+C gestoppt werden.
7. Strace-Befehl zum Drucken der Debugging-Ausgabe
Der Strace-Befehl mit der Option -d kann zum Drucken der Debugging-Ausgabe verwendet werden. In diesem Beispiel wird ein einfacher Linux-Befehl pwd zum Tracing verwendet.
$ strace -d pwd
Ausgabe:
8. Strace-Befehl zum Ausdrucken der für Systemaufrufe aufgewendeten Zeit.
Der Strace-Befehl mit der Option -T gibt die für Systemaufrufe aufgewendete Zeit wie folgt an:
$ strace -T pwd
Ausgabe:
9. Strace-Befehl zum Drucken des Anweisungszeigers
Der Strace-Befehl mit der Option -i gibt den Anweisungszeiger aus. In diesem Beispiel wird ein einfacher Linux-Befehl pwd zum Tracing verwendet.
$ strace -i pwd
Ausgabe:
10. Strace-Befehl zum Verfolgen von Systemaufrufen basierend auf einer bestimmten Bedingung
Der Strace-Befehl kann verwendet werden, um Systemaufrufe basierend auf bestimmten Bedingungen wie Speicher, Prozess, CPU usw. zu verfolgen. In diesem Beispiel werden Systemaufrufe im Zusammenhang mit der Speicherverwaltung für einen einfachen Linux-Befehl pwd verfolgt.
$ strace -q -e Speicherpwd
Ausgabe:
11. Strace-Befehl zum Verfolgen signalbezogener Systemaufrufe
Signalbezogene Systemaufrufe können verfolgt werden, indem der Trace-Typ im Befehl definiert wird. In diesem Beispiel nc -v -n localhost 80 wird zum Verfolgen von Systemaufrufen verwendet, die sich auf das Signal beziehen.
$ strace -e trace=signal nc -v -n 127.0.0.1 80
Ausgabe:
Schlussfolgerung
In diesem Artikel haben wir gelernt, was das Strace Utility Tool ist und wann es verwendet werden kann. Außerdem habe ich einige wichtige strace-Befehle behandelt, um Systemaufrufe und -prozesse zu beheben und zu debuggen.