2016-06-12 12 views
2

Ich arbeite mit Threads und einer (oder mehrere) meiner Thread (s) ist/sind stecken geblieben und endet nie. Das Problem ist, dass ich das nicht finden kann.So finden Sie, welcher Thread feststeckt

Also ich würde gerne wissen, ob es eine Möglichkeit gibt zu finden, es ist ID, die gleiche ID, die in PS Linux-Befehl angezeigt wird. Wenn es keinen Weg gibt, wie könnte ich herausfinden, welcher Thread feststeckt?

Obs: Bereits die pthread_self() überprüft und es ist nicht das, was ich suche.

+0

'ps' führt keine Threads ohne einen speziellen Schalter auf. Sind Sie sicher, dass Sie Threads und keine Prozesse möchten? –

+0

Bitte beachten Sie die folgenden Informationen: http://StackOverflow.com/Help/Mcve – Elyasin

+0

@EugeneSh. Ich denke schon ... Wenn ich mit dem Zeichen '&' kompilieren kann, kann ich den 'PS' Befehl geben, und ich kann meine ausführbare Datei dort mit einer PID aufgelistet sehen. Ich habe mich nur gefragt, ob es einen Weg gibt, herauszufinden, welcher Thread feststeckt ... – PlayHardGoPro

Antwort

4

Mit dem GDB-Debugger können wir herausfinden, welcher Thread im blockierenden Zustand ist.

  1. Versuchen Sie zuerst, Ihren Code mit Debug-Symbolen zu kompilieren.
  2. gdb your_file_executable
  3. setzen einige Bruchstelle (Sie wissen würde, wo die bp genau platzieren)
  4. info threads

„info Themen“ Informationen zu den Themen geben, die/Laufen hervorgebracht wird. w

+1

Ein anderer Befehl, den ich nützlich fand, ist 'thread apply all bt' - er druckt einen Stack-Trace von jedem Thread, so dass Sie den stecken gebliebenen Thread leicht finden können. –

Verwandte Themen