マルチスレッドのプログラミング

dbx の使用

dbx ユーティリティでは、C++、ANSI C、FORTRAN のソースプログラムをデバッグしたり、実行したりできます。dbx のコマンドは、 デバッガと同じコマンドを受けつけますが、標準端末 (tty) インタフェースを使用する点が異なります。dbx とデバッガのどちらも、現在はマルチスレッドプログラムのデバッグをサポートしています。dbx とデバッガの詳細は、dbx(1) のマニュアルページおよび『Sun WorkShop 入門』 を参照してください。

以下に示す表 7-5 にある dbx のオプションは、すべてマルチスレッドアプリケーションをサポートできます。

表 7-5 dbx のマルチスレッドプログラム用オプション

オプション 

意味 

cont at line [sig signo id]

line で指定した行から signo で指定したシグナルで実行を再開する。id は実行を再開するスレッドまたは LWP を指定する (デフォルトの値は all)。

lwp

現在の LWP を表示する。指定の LWP (lwpid) に切り替える。

lwps

現在のプロセスの、すべての LWP を一覧表示する。 

next ... tid

指定のスレッドをステップ実行する。関数呼び出しをスキップするときは、その関数呼び出しの間だけ、すべての LWP の実行が暗黙のうちに再開される。実行可能でないスレッドをステップ実行できない。 

next ... lid

指定の LWP をステップ実行する。その LWP のスレッドが実行可能であることが必要。関数をスキップするとき、すべての LWP の実行が暗黙のうちに再開されることはない。  

step... tid

指定のスレッドをステップ実行する。関数呼び出しをスキップするときは、その関数呼び出しの間だけ、すべての LWP の実行が暗黙のうちに再開される。実行可能でないスレッドをステップ実行できない。 

step... lid

指定の LWP をステップ実行する。関数をスキップするとき、すべての LWP の実行が暗黙のうちに再開されることはない。  

stepi... lid

指定の LWP 

stepi... tid

指定のスレッドが実行可能である LWP 

thread

現在のスレッドを表示する。指定のスレッド (tid) に切り替える。以下の tid のデフォルト値は現在のスレッド

thread -info [ tid ]

指定のスレッドの全情報を表示する。 

thread -locks [ tid ]

指定のスレッドが保持しているロックを一覧表示する。 

thread -suspend [ tid ]

指定のスレッドを停止状態にする。  

thread -continue [ tid ]

指定のスレッドの停止状態を解除する。 

thread -hide [ tid ]

指定のスレッド (または現在のスレッド) を見えなくする。このスレッドは、threads オプションのリストには表示されない。

thread -unhide [ tid ]

指定のスレッド (または現在のスレッド) の隠蔽を解除する。 

allthread-unhide

全スレッドの隠蔽を解除する。  

threads

全スレッドを一覧表示する。  

threads-all

通常は表示されないスレッド (ゾンビ) を表示する。  

all|filterthreads-mode

threads オプションのスレッド一覧表示にフィルタをかけるかどうかを指定する。

auto|manualthreads-mode

スレッドリストの自動更新機能を有効にする。  

threads-mode

現在のモードをエコーする。以前の任意の書式に続けてスレッドまたは LWP の ID を指定すれば、指定のエンティティのトレースバックを得ることができる。