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

Wie sollte strace verwendet werden?

In einfachen Worten, strace verfolgt alle von einem Programm ausgegebenen Systemaufrufe zusammen mit ihren Rückkehrcodes. Denken Sie an Dinge wie Datei-/Socket-Operationen und viel obskurere.

Es ist am nützlichsten, wenn Sie über Grundkenntnisse in C verfügen, da Systemaufrufe hier eher für standardmäßige C-Bibliotheksaufrufe stehen würden.

Nehmen wir an, Ihr Programm ist /usr/local/bin/cough. Verwenden Sie einfach:

strace /usr/local/bin/cough <any required argument for cough here>

oder

strace -o <out_file> /usr/local/bin/cough <any required argument for cough here>

in 'out_file' zu schreiben.

Alle strace-Ausgaben gehen an stderr (Vorsicht, die schiere Menge verlangt oft nach einer Umleitung zu einer Datei). Im einfachsten Fall bricht Ihr Programm mit einem Fehler ab und Sie können sehen, wo seine letzten Interaktionen mit dem Betriebssystem in der Strace-Ausgabe waren.

Weitere Informationen sollten verfügbar sein mit:

man strace

Strace-Übersicht
strace kann als leichtgewichtiger Debugger angesehen werden. Es ermöglicht einem Programmierer / Benutzer, schnell herauszufinden, wie ein Programm mit dem Betriebssystem interagiert. Dies geschieht durch Überwachung von Systemaufrufen und -signalen.

Verwendung
Gut, wenn Sie keinen Quellcode haben oder sich nicht die Mühe machen möchten, ihn wirklich durchzugehen.
Auch nützlich für Ihren eigenen Code, wenn Sie keine Lust haben, GDB zu öffnen, sondern nur daran interessiert sind, externe Interaktionen zu verstehen.

Eine gute kleine Einführung
Hier ist eine sanfte Einführung in die Verwendung von strace zum Debuggen von Prozesshängen:strace Introduction


Linux
  1. Systemaufrufe unter Linux mit strace verstehen

  2. Wie viel freien Speicherplatz sollte ich auf meinem Server haben?

  3. So ersetzen Sie ein ausgefallenes Btrfs-Gerät

  4. Wie kann man E/A-Vorgänge pro Datei in Linux nachverfolgen?

  5. Wie kann die Eval-Funktion im Makefile verwendet werden?

So verfolgen Sie die Programmausführung mit dem Linux-Strace-Befehl

Wie ich Ansible verwendet habe, um Updates zu Hause zu automatisieren

So listen Sie gemeinsam genutzte Bibliotheken auf, die von ausführbaren Dateien in Linux verwendet werden

So verwenden Sie den Linux-Strace-Befehl

Wie soll ich die aktuelle Netzwerkauslastung ermitteln?

Wie groß sollte die Swap-Partition sein?