Ich habe mich strace
kurz an einen Prozess gebunden. Der Prozess hat 90 Threads erstellt. Als ich den fehlerhaften Thread gefunden habe, musste ich mühsam nach dem übergeordneten Thread suchen, dann nach dem übergeordneten Thread und so weiter bis zum Root-Prozess.
Gibt es einen Trick oder ein Werkzeug, um schnell herauszufinden, welcher Thread einen anderen erstellt hat? Oder noch besser, drucken Sie den Baum der Thread-Kreationen wie pstree
?
linux
multithreading
strace
projekte haben
quelle
quelle
Antworten:
strace -f
untergeordneten Prozess verfolgen, derfork()
ed.quelle
Ich kann keinen einfachen Weg sehen:
Sie können die
-ff
Option mit verwenden-o filename
, um mehrere Dateien zu erstellen (eine pro PID).z.B:
Das würde Ihnen helfen zu sehen, welcher Elternteil was erstellt hat. Vielleicht würde Ihnen das helfen - zumindest könnten Sie dann rückwärts suchen.
quelle
Es gibt ein Perl-Skript namens
strace-graph
. Hier ist eine Version von Github . Es ist mit Crosstool-ng- Versionen von Compilern verpackt . Es funktioniert bei mir sogar plattformübergreifend.ARM Linux Box.
X86_64 Linux Box.
Die Ausgabe kann zum Navigieren im Hauptablaufverfolgungsprotokoll verwendet werden.
quelle
Sie können den Datenverkehr für einen einzelnen Prozess erfassen
strace
, wie von @stackmate vorgeschlagen.oder geben Sie es in eine Datei aus.
-f
für alle gegabelten Prozesse,-s
damit die Zeichenfolgengröße gedruckt und-o
die Ausgabe in eine Datei ausgegeben wird.quelle