strace: Unterschied zwischen den Versionen
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
Michi (Diskussion | Beiträge) Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
Der [[Shell-Befehl]] <b>strace</b> zeichnet die [[Systemaufrufe]] eines laufenden Programms bzw. eines [[Prozesses]] auf. | Der [[Shell-Befehl]] <b>strace</b> zeichnet die [[Systemaufrufe]] eines laufenden Programms bzw. eines [[Prozesses]] auf. | ||
strace | Der Befehl ist nur unter [[Linux]] vorhanden. Unter [[Solaris]] und [[FreeBSD]] gibt es stattdessen den Befehl [[truss]]. | ||
== Konzept == | |||
strace protokolliert detailliert sämtliche Abläufe an der Schnittstelle zwischen einem Programm und dem [[Kernel]]. | |||
-------------------------------------- | |||
| Anwendungsprogramm | | |||
--------------------------------- | | |||
| weitere Bibliotheken | | | |||
-------------------------------------- | |||
| Libc (open, close, read, write...) | | |||
<font color=red>---------------------------------</font> <-- Ansatzpunkt von strace | |||
| Linux-Kernel | | |||
-------------------------------------- | |||
| Hardware | | |||
-------------------------------------- | |||
strace eignet sich so für mehrere Aufgaben: | |||
{| class=wiki | |||
! Aufgabe !! Frage | |||
|- | |||
| Debugging eigener und fremder Programme, notfalls auch ohne Zugang zum Quelltext. | |||
| Warum arbeitet das Programm nicht so, wie es soll? | |||
|- | |||
| Kennenlernen von Systemaufrufen und gängigen Programmiertechniken. | |||
| Wie funktioniert das Zusammenspiel von Programm und Betriebssystem? | |||
|- | |||
| Performance-Untersuchungen, besonders bei Closed Source-Software. | |||
| Warum läuft das Programm so langsam? | |||
|} | |||
==Optionen== | ==Optionen== |
Version vom 27. November 2010, 23:48 Uhr
Der Shell-Befehl strace zeichnet die Systemaufrufe eines laufenden Programms bzw. eines Prozesses auf.
Der Befehl ist nur unter Linux vorhanden. Unter Solaris und FreeBSD gibt es stattdessen den Befehl truss.
Konzept
strace protokolliert detailliert sämtliche Abläufe an der Schnittstelle zwischen einem Programm und dem Kernel.
-------------------------------------- | Anwendungsprogramm | --------------------------------- | | weitere Bibliotheken | | -------------------------------------- | Libc (open, close, read, write...) | --------------------------------- <-- Ansatzpunkt von strace | Linux-Kernel | -------------------------------------- | Hardware | --------------------------------------
strace eignet sich so für mehrere Aufgaben:
Aufgabe | Frage |
---|---|
Debugging eigener und fremder Programme, notfalls auch ohne Zugang zum Quelltext. | Warum arbeitet das Programm nicht so, wie es soll? |
Kennenlernen von Systemaufrufen und gängigen Programmiertechniken. | Wie funktioniert das Zusammenspiel von Programm und Betriebssystem? |
Performance-Untersuchungen, besonders bei Closed Source-Software. | Warum läuft das Programm so langsam? |
Optionen
Option | Beschreibung |
---|---|
-f | Anzeige auch aller Kindprozesse. |
-o file | Protokollierung der Ausgabe von strace in die Datei "file". |
-p <PID> | Anzeige von Informationen zum bereits laufenden Prozess mit der PID "<PID>". |
-v | Mehr Informationen. |
Verwendung
Anzeige der vom Programm "free" aufgerufenen Systemfunktionen (um die Speicherauslastung des Systems zu ermitteln und anschliessend anzuzeigen).
$ strace free
Anzeige der vom Programm "free" geöffneten Dateien. Dabei wird die Ausgabe auf die Funktion "open" eingeschränkt.
$ strace -e trace=open free
Anzeige der vom Programm "free" geöffneten und geschlossenen Dateien. Dabei wird die Ausgabe auf die Funktionen "open" und "close" eingeschränkt.
$ strace -e trace=open,close free
Anzeige der dateirelevanten Informationen bei der Ausführung des Programms "free".
$ strace -e trace=file free
Anzeige der prozessverwaltungsbezogenen Informationen bei der Ausführung des Programms "free".
$ strace -e trace=process free
Anzeige der netzwerkspezifischen Informationen bei der Ausführung des Programms "free".
$ strace -e trace=network free
Aufzeichnung der Funktionsaufrufe der Anwendung "S99siaddae" in der Datei "/tmp/file".
$ strace -o /tmp/file /opt/lib/sisis/siadmin/etc/S99siaddae start
Aufzeichnung der Funktionsaufrufe der Anwendung "S99siaddae" in der Datei "/tmp/file".
$ strace -o /tmp/file /opt/lib/sisis/siadmin/etc/S99siaddae start
Aufzeichnung der Funktionsaufrufe von PID 28756.
$ strace -p 28756
Anzeige einer Tabelle der von Prozess 28756 geöffneten Dateien.
$ lsof -p 28756
Ausgabe der Funktionsaufrufe von Befehl "xyz" in die Datei "file".
$ strace -so -o file xyz
Weblinks
Herausgeber | Sprache | Webseitentitel | Anmerkungen |
---|---|---|---|
Wikipedia | eng | stracewbm | Enzyklopädischer Artikel |