Oracle® Solaris Studio 12.4: dbx コマンドによるデバッグ

印刷ビューの終了

更新: 2015 年 1 月
 
 

スレッド情報

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@numberdbx 形式のスレッド ID

  • スレッド状態

  • 単一引用符内のスレッド名

  • スレッドの優先順位を示す番号

スレッドの状態と 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 に所定のシグナルが発生しました。

プロセス同期

この LWP が所属するプロセスの実行が開始しました。

LWP 終了中

LWP は終了プロセス中です。