dbx では、次のスレッド情報を入手できます。
(dbx) threads t@1 a l@1 ?() running in main() t@2 ?() asleep on 0xef751450 in_swtch() t@3 b l@2 ?() running in sigwait() t@4 consumer() asleep on 0x22bb0 in _lwp_sema_wait() *>t@5 b l@4 consumer() breakpoint in Queue_dequeue() t@6 b l@5 producer() running in _thread_start() (dbx) |
ネイティブコードに対して、情報の各行の内容は次のとおりです。
* (アスタリスク) は、ユーザーの注意を必要とするイベントがこのスレッドで発生したことを示します。通常は、ブレークポイントに付けられます。
アスタリスクの代わりに 'o' が示される場合は、dbx 内部イベントが発生しています。
> (矢印) は現在のスレッドを示します。
t@number はスレッド ID であり、特定のスレッドを指します。number は、thr_create が返す thread_t の値になります。
b l@number はそのスレッドが指定の LWP に結合されていることを表し、a l@number はそのスレッドがアクティブであることを表します。すなわちそのスレッドはオペレーティングシステムにて実行可能です。
thr_create に渡されたスレッドの開始関数。?() は開始関数が不明であることを示します。
スレッド状態 (スレッド状態の詳細については、表 11–1 を参照)
スレッドが現在実行している関数
Java コードでは、情報の各行は次で構成されています。
t@number は dbx スタイルスレッド ID を示します。
スレッド状態 (スレッド状態の詳細については、表 11–1 を参照)
単一引用符内のスレッド名
スレッドの優先順位を示す番号
スレッドの状態と LWP の状態 |
内容の説明 |
---|---|
中断 |
スレッドは明示的に中断されています。 |
実行可能 |
スレッドは実行可能であり、コンピューティング可能なリソースとして LWP を待機しています。 |
ゾンビ |
切り離されたスレッドが存在する場合 (thr_exit())、次の関数を使用して再接続するまではそのスレッドはゾンビ状態にあります。thr_join()THR_DETACHED は、スレッドの生成時に指定されたフラグです (thr_create())。非結合のスレッドは、再実行されるまでゾンビ状態です。 |
syncobj でスリープ中 |
スレッドは所定の同期オブジェクトでブロックされています。libthread と libthread_db によるサポートレベルにより、syncobj が伝える情報は単純な 16 進アドレスになったり、より詳細な内容になります。 |
アクティブ |
LWP でスレッドがアクティブですが、dbx は LWP をアクセスできません。 |
未知 |
dbx では状態を判定できません。 |
lwpstate |
結合スレッドやアクティブスレッドの状態に、LWP の状態が関連付けられています。 |
実行中 |
LWP が実行中でしたが、ほかの LWP と同期して停止しました。 |
システムコール num |
所定のシステムコール番号の入口で LWP が停止しました。 |
システムコール num 戻り |
所定のシステムコール番号の出口で LWP が停止しました。 |
ジョブコントロール |
ジョブコントロールにより、LWP が停止しました。 |
LWP 中断 |
LWP がカーネルでブロックされています。 |
シングル中断 |
LWP により、1 ステップが終了しました。 |
ブレークポイント |
LWP がブレークポイントに達しました。 |
障害 num |
LWP に所定の障害番号が発生しました。 |
シグナル name |
LWP に所定のシグナルが発生しました。 |
プロセス sync |
この LWP が所属するプロセスの実行が開始しました。 |
LWP 終了 |
LWP は終了プロセス中です。 |