次: , 前: Stopping, 上: Stopping


5.1 ブレイクポイント、ウォッチポイント、キャッチポイント

ブレイクポイントによって、 プログラム内のある特定の箇所に到達するたびに、 プログラムを停止することができます。 個々のブレイクポイントについて、 そのブレイクポイントにおいてプログラムを停止させるためには満足されなければならない、 より詳細な条件を設定することができます。 ブレイクポイントの設定は、 いくつかあるbreakコマンドのいずれかによって行います (see Setting breakpoints)。 行番号、 関数名、 プログラム内における正確なアドレスを指定することで、 プログラムのどこで停止するかを指定することができます。

HP-UX、 SunOS 4.x、 SVR4、 Alpha OSF/1上では、 実行開始前に共用ライブラリ内にブレイクポイントを設定することもできます。 HP-UXシステムでは、 ちょっとした制約があります。 プログラムによって直接呼び出されるのではない共用ライブラリ・ルーチン (例えば、 pthread_createの呼び出しにおいて、 引数として指定されるルーチン) にブレイクポイントをセットするためには、 そのプログラムの実行が開始されるまで待たなければなりません。

ウォッチポイントは、 ある式の値が変化したときにユーザ・プログラムを停止させる、 特別なブレイクポイントです。 ウォッチポイントは、 他のブレイクポイントと同じように管理することができますが、 設定だけは特別なコマンドで行います (see Setting watchpoints)。 有効化、 無効化、 および削除を行うときに使用する各コマンドは、 対象がブレイクポイントであってもウォッチポイントであっても同一です。

ブレイクポイントでGDBが停止するたびに、 常に自動的にユーザ・プログラム内のある値を表示させるようにすることができます。 See Automatic display

キャッチポイントは、 C++の例外の発生やライブラリのローディングのようなある種のイベントが発生したときに、 ユーザ・プログラムを停止させる、 また別の特殊なブレイクポイントです。 ウォッチポイントと同様、 キャッチポイントを設定するために使用する特別なコマンドがあります。 (see Setting catchpoints)。 しかし、 この点を除けば、 キャッチポイントを他のブレイクポイントと同様に管理することができます。 (ユーザ・プログラムがシグナルを受信したときに停止するようにするためには、 handleコマンドを使用します。 see Signals)。

ユーザが新規に作成した個々のブレイクポイント、 ウォッチポイント、 キャッチポイントに対して、 GDBは番号を割り当てます。 この番号は1から始まる連続する整数値です。 ブレイクポイントの様々な側面を制御するコマンドの多くにおいて、 変更を加えたいブレイクポイントを指定するのにこの番号を使用します。 個々のブレイクポイントを有効化無効化することができます。 無効化されたブレイクポイントは、 再度有効化されるまで、 ユーザ・プログラムの実行に影響を与えません。