Wie verwende ich strace, um Netzwerk- und serielle Anrufe abzurufen?

Wie verwende ich strace, um Netzwerk- und serielle Anrufe abzurufen?

Ich habe ein Python-Programm, das im Hintergrund läuft. Was ich zum Debuggen wissen muss, ist, welche Anrufe es seriell, über das Netzwerk und an die Standardausgabe sendet und empfängt.

Ich weiß, dass ich den Parameter „-e write“ brauche, wenn ich stdout sehen will, aber was ist mit den anderen? Und ich brauche ihn, um alle drei mit einem einzigen Befehl auszugeben, da es Teil einer Konsolenanwendung sein wird, die ich erstelle.

Antwort1

Im Allgemeinen würden Sie zunächst straceohne ausführen (eventuell mit einem kleineren/leichteren Programm mit ähnlichen Vorgängen) und den Stderr in eine Datei umleiten. Dann werfen Sie einen Blick in die Datei, um den Mindestsatz an Optionen auszuwählen, den Sie benötigen.-e-e

In Ihrem speziellen Fall habe ich es bei einem Aufruf ausgeführt wget(nur nach Netzwerkkram suchen) und bin zu dem Schluss gekommen, dass diese Optionen nützlich wären: -e socket,connect,close,write,read(löschen, readwenn Sie an der Empfangsseite nicht interessiert sind).

Mit diesen Optionen stracewerden für die Netzwerkanrufe folgende Dinge angezeigt:

socket(PF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(443), sin_addr=inet_addr("74.125.202.121")}, 16) = 0
write(4, "\26\3\1\0\302\1\0\0\276\3\1\374\2\223/\332\3545\34\2628u3-3hT\25s\"\310\215"..., 199) = 199
read(4, "\26\3\1\0]", 5)                = 5
read(4, "\2\0\0Y\3\1U\251X\245#\313\3544a\17\372\276\340^%\177y\270asQ\255^\7B\212"..., 93) = 93
...
close(4)                                = 0

verwandte Informationen