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 または a l@number は、そのスレッドが指定された LWP にバインドされているか、またはその LWP 上でアクティブであることを示します。つまり、そのスレッドは実際にオペレーティングシステムが実行できます。
thr_create に渡されたスレッドの「開始関数」。?() は開始関数が不明であることを示します。
スレッド状態。
スレッドが現在実行している関数
Java コードでは、情報の各行は次で構成されています。
t@number、dbx 形式のスレッド ID
スレッド状態
単一引用符内のスレッド名
スレッドの優先順位を示す番号
スレッドは明示的に中断されています。
スレッドは実行可能であり、コンピューティング可能なリソースとして LWP を待機しています。
切り離されたスレッドが終了すると (thr_exit))、そのスレッドは、thr_join() を使用して再度参加させられるまでゾンビ状態にあります。THR_DETACHED は、スレッドの作成時 (thr_create()) に指定されたフラグです。非結合のスレッドは、再実行されるまでゾンビ状態です。
スレッドは所定の同期オブジェクトでブロックされています。libthread と libthread_db によって提供されるサポートレベルに応じて、syncobj は単なる 16 進数のアドレスになったり、より詳細な情報になったりします。
スレッドは LWP 上でアクティブですが、dbx がその LWP にアクセスできません。
dbx では状態を判定できません。
結合スレッドやアクティブスレッドの状態に、LWP の状態が関連付けられています。
LWP が実行中でしたが、ほかの LWP と同期して停止しました。
所定のシステムコール番号の入口で LWP が停止しました。
所定のシステムコール番号の出口で LWP が停止しました。
ジョブコントロールにより、LWP が停止しました。
LWP がカーネルでブロックされています。
LWP により、1 ステップが終了しました。
LWP がブレークポイントに達しました。
LWP に所定の障害番号が発生しました。
LWP に所定のシグナルが発生しました。
この LWP が所属するプロセスの実行が開始しました。
LWP は終了プロセス中です。