2016-06-12 6 views
2

私はスレッドで作業していますが、私のスレッドは1つ(または複数)のスレッドがスタックしていて、決して終了しません。問題は、私が見つけられないことです。スタックされているスレッドを見つける方法

ID、つまりPSのLinuxコマンドに表示されているのと同じIDを見つける方法があるかどうかを知りたいと思います。方法がない場合、どのスレッドがスタックされているかを見つけることができますか?

Obs:すでにpthread_self()を確認しましたが、私が探しているものではありません。

+0

'ps'は特別なスイッチのないスレッドをリストしていません。スレッドではなくプロセスを使用してもよろしいですか? –

+0

以下の情報を参照してください:http://stackoverflow.com/help/mcve – Elyasin

+0

@EugeneSh。私はそう思っています...文字でコンパイルするときに '&'は 'PS'コマンドを与えることができ、そこには実行可能ファイルが表示され、pidが表示されます。どのスレッドがスタックしているかを見つける方法があるのか​​どうかは疑問に思った。 – PlayHardGoPro

答えて

4

GDBデバッガを使用すると、どのスレッドがブロッキング状態にあるかを知ることができます。

  1. まず、デバッグシンボルでコードをコンパイルしてみます。
  2. gdb your_file_executable
  3. info threads

「情報スレッドが」実行中/起動されたスレッドについての情報を提供します(あなたが場所を正確に塩基対を配置する場所を知っていることでしょう)、いくつかのブレークポイントを置きます。 w

+1

私が有用と思った別のコマンドは、 'thread apply all bt'です。スタックされたスレッドをすべて見つけることができるように、すべてのスレッドのスタックトレースを表示します。 –

関連する問題