Sun Studio 12 Update 1: dbx コマンドによるデバッグ

スレッド情報

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)

ネイティブコードに対して、情報の各行の内容は次のとおりです。

Java コードでは、情報の各行は次で構成されています。

表 11–1 スレッドの状態と LWP の状態

スレッドの状態と LWP の状態  

内容の説明  

中断 

スレッドは明示的に中断されています。 

実行可能 

スレッドは実行可能であり、コンピューティング可能なリソースとして LWP を待機しています。 

ゾンビ 

切り離されたスレッドが存在する場合 (thr_exit())、次の関数を使用して再接続するまではそのスレッドはゾンビ状態にあります。thr_join()THR_DETACHED は、スレッドの生成時に指定されたフラグです (thr_create())。非結合のスレッドは、再実行されるまでゾンビ状態です。

syncobj でスリープ中

スレッドは所定の同期オブジェクトでブロックされています。libthreadlibthread_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 は終了プロセス中です。