Tracing Pthreads in Linux?

8

Ich habe kein Tool gefunden, das für das Nachverfolgen von Threads Threads im Linux-Prozess erstellt wurde. Ich möchte etwas wie strace / ltrace, gibt es etwas, um Anrufe in Echtzeit zu sehen? Danke

    
Sergey 08.10.2011, 16:31
quelle

2 Antworten

14

strace funktioniert auch für Threads. Verwenden Sie strace -f , um alle Threads zu strace.

Um nur einen bestimmten Thread zu streamen, müssen Sie zuerst seine tid (Thread-ID) finden. Threads haben Thread-IDs, die wirklich eine PID (Prozess-ID) sind.

Sobald Sie die PID des Threads kennen, verwenden Sie strace -p the_pid , um diesen Thread zu straffen.

Die PIDs aller Threads in einem Prozess können in /proc/<pid>/task/ gefunden werden, oder die aktuelle Thread-ID kann mit dem Aufruf gettid() C gelernt werden.

    
nos 08.10.2011, 16:46
quelle
0

eigentlich strace ist nicht so gut wie perf.

verwenden Perf-Tool, können Sie weitere Informationen erhalten.

zum Beispiel, wenn einige Ihrer Threads hängen, und Sie herausfinden möchten, welche Funktionen Anrufe, die hängen, benutze strace -p pid-id gibt begrenzte Informationen zurück, aber perf top, oder perf-t tid gibt mehr zurück

    
jiayy 06.01.2015 05:11
quelle

Tags und Links