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

dbx の使用

dbx ユーティリティーは、http://developers.sun.com/sunstudio/ から入手可能な Sun Studio 開発者ツールに含まれているデバッガです。Sun Studio dbx コマンド行デバッガでは、C、C++、および Fortran で記述されたソースプログラムをデバッグしたり実行したりできます。dbx を使用するには、まず端末ウィンドウで起動し、dbx コマンドを使用してプログラムを対話的にデバッグします。グラフィカルインタフェースの方が望ましい場合は、Sun Studio IDE (統合開発環境) のデバッグウィンドウで dbx の同じ機能を使用できます。dbx の起動方法については、dbx(1) のマニュアルページを参照してください。『Sun Studio 12: dbx コマンドによるデバッグ』Sun Studio 12: Debugging a Program With dbxのマニュアルを参照してください。Sun Studio IDE のデバッグ機能は、IDE のオンラインヘルプで説明されています。

マルチスレッドプログラムのデバッグの詳細については、『Sun Studio 12: dbx コマンドによるデバッグ』の第 11 章「マルチスレッドアプリケーションのデバッグ」を参照してください。dbx デバッガは、『Sun Studio 12: dbx コマンドによるデバッグ』の付録 B「イベント管理」で説明されているスレッドイベントのイベントハンドラを操作するためのコマンドを提供します。

Table 8–1 に記載されているすべての 表 8–1 オプションは、マルチスレッドアプリケーションをサポートします。

表 8–1 dbx のマルチスレッドプログラム用オプション

オプション 

動作 

cont at line [-sig signo id]

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

lwp [lwpid]

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

lwps

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

next ... tid

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

next ... lwpid

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

step... tid

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

step... lwpid

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

stepi... lwpid

指定の LWP で機械命令をステップ実行する (呼び出しにステップインする)。 

stepi... tid

指定のスレッドが実行可能である LWP で機械命令をステップ実行する。 

thread [ tid ]

現在のスレッドを表示するか、またはスレッド tid に切り替える。以降のすべての変型で、tid を省略すると現在のスレッドになる。

thread -info [ tid ]

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

thread -blocks [ tid ]

指定されたスレッドが保持しているロックで、ほかのスレッドをブロックしているすべてのロックを一覧表示する。 

thread -suspend [ tid ]

指定のスレッドを停止状態にして、実行されないようにする。停止状態のスレッドの threads リストには「S」が表示される。

thread -resume [ tid ]

指定のスレッドの停止状態を解除して、実行が再開されるようにする。 

thread -hide [ tid ]

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

thread -unhide [ tid ]

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

thread -unhide all

全スレッドの非表示を解除する。

threads

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

threads -all

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

threads -mode all|filter

threads オプションのスレッド一覧表示にフィルタをかけるかどうかを指定する。フィルタが有効な場合、thread -hide コマンドで非表示になっているスレッドは表示されない。

threads -mode auto|manual

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

threads -mode

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