dbx コマンドによるデバッグ

イベントハンドラのリストの表示とクリア

dbx セッション中にブレークポイントやトレースポイントを複数設定することがよくあります。dbx には、それらのポイントを表示したりクリアしたりするためのコマンドが用意されています。

ブレークポイントとトレースポイントの表示

すべての有効なブレークポイントのリストを表示するには、status コマンドを使用します。ブレークポイントは ID 番号付きで表示され、この番号はほかのコマンドで使用できます。

C++ の多重ブレークポイントのところでも説明したように、dbx はキーワード inmember、inclass、infunction で設定された多重ブレークポイントを、1 つのステータス ID 番号を使用してまとめて報告します。

ステータス ID 番号を使用して特定のブレークポイントを削除

status コマンドを使用してブレークポイントをリスト表示した場合、dbx は、各ブレークポイントの作成時に割り当てられた ID 番号を表示します。 delete コマンドを使用することで、ID 番号によってブレークポイントを削除したり、キーワード all により、プログラム内のあらゆる場所に現在設定されているブレークポイントをすべて削除することができます。

ブレークポイントを ID 番号 ID_number によって削除するには、次のように入力します。


(dbx) delete 3 5

dbx に現在読み込まれているプログラムに設定されているすべてのブレークポイントを削除するには、次のように入力します。


(dbx) delete all

ウォッチポイント

ウォッチポイントは、変数または式の値が変化したときにイベントを発生させる dbx の一般的な機能です。

アドレスの内容に書き込みが行われたときに実行を停止する

アドレスの内容に書き込みが行われたときにプログラムの実行を停止するには、次のように入力します。


(dbx) stop modify & variable

stop modify を使用するときの注意事項

指定した変数の値が変化したときに実行を停止する

指定した変数の値が変化したときにプログラムの実行を停止するには、次のように入力します。


(dbx) stop change variable

stop change を使用するときの注意事項

指定した条件が発生した場合に実行を停止する

条件文が真になったときにプログラムの実行を停止するには、次のように入力します。


(dbx) stop cond condition

高速 modify イベント

ウォッチポイントは、modify コマンドを使用すると簡単に設定できます。このコマンドは、プログラムを自動的にステップ実行する代わりに、はるかに高速のページ保護構造を使用します。処理速度は、デバッグ中のプログラムのシステム呼び出し率だけでなく、監視中の変数の存在するページが何回修正されるかによって異なります。