Go to the first, previous, next, last section, table of contents.

ブレーク時のコマンドの起動

あなたは、ブレークポイントによってプログラムが停止した時、ブレーク ポイントに対して一連のコマンドの起動を指定することができます。例えば、 あなたは変数値を式を使って表示したいかもしれませんし、他のブレーク ポイントを無効にしたくなるかもしれません。

commands bnum
bnum で表されるブレークポイントに対するコマンドを指定します。 コマンド自身は、続く行に記述します。`end' という行を入力 することで、コマンドの入力を終了します。 ブレークポイントに対する全てのコマンドを無効にするには、`commands' コマンドを使い、続けてただちに `end' と入力します; これは、何もコマンドを与えないことになります。 引き数がない場合、`commands' は最後に設定されたブレークポイントを 参照します。

ブレークポイントのコマンドはプログラムの再実行が可能です。 単に、`cont'`step' や、そういったコマンドを使った場合は 実行を再開しますが、ブレークポイント上のコマンドは無視されたままです。 再びプログラムが停止した時、GDB は停止の原因に従って動作します。

もし、最初のコマンドとして `silent' が記述されていたならば、 ブレークポイントで停止した時に普通表示されるメッセージは表示されません。 これは、特別なメッセージを表示して継続するようなブレークポイントに 対して好ましいことです。もし、継続するコマンドが何も表示しないのなら、 あなたは、ブレークポイントに達したのかどうかを知るためのサインを、 何も見ることができなくなります。`silent' は実際のコマンドでは ありません; これは、ブレークポイント用のコマンドの最初においてのみ意味のあるもの です。

`echo'`output' コマンドは、`silent' なブレーク ポイントにおいて、メッセージの出力内容を正確に指定する時にしばしば 便利なものです。See section 出力調整用のコマンド

例えば、ここに、エントリ foo で変数 x が正の時にその値を 表示するブレークポイントのコマンドをお見せしましょう。

break foo if x>0
commands
silent
echo x is\040
output x
echo \n
cont
end

ブレークポイント・コマンドの別なアプリケーション例は、一つのバグを 修整し、次のバグをテストできるようにするというものでしょう。ブレーク ポイントを間違いのあるコード上の行に設定し、何かエラーが発生した場合の ケースを想定し、そして、それぞれの変数が正しい値になるように修整する コマンドを割り当てます。`cont' コマンドによる終了はプログラムを 停止させず、`silent' コマンドによる開始は何も出力を生成しません。 ここに、一つの例を示します:

break 403
commands
silent
set x = y + 4
cont
end

Unix の下でのブレークポイントの自動的な継続処理の1つの欠点は、 あなたのプログラムが端末の raw モードを使っている時に発生します。GDB は、 コマンドを起動する前に、自分自身の端末モードを (raw モード以外に) 切り 替えます。 そして、あなたのプログラムの実行が継続される時に raw モードに戻します。 このことは、端末の入力として保留されていたいくつかのデータを失わせて しまいます。

GNU システムにおいては、これは端末モードにおける振る舞いを変えることで 修整されることになるでしょう。

Unix の下であなたがこの問題に直面した時、あなたはコマンドのかわりに ブレークポイントの条件の方にアクションを設定することで、問題を回避する ことができます。例えば、

condition 5  (x = y + 4), 0

は条件式 (See section ) に x を望む値に変更するように 指示し、0値を持たせることで、プログラムが停止しないように指定した ことになります。ここでは、ブレーク条件は端末モードを変更することなく 評価されるという理由によって、入力の消失を回避することができます。 あなたが副作用が引き起こすような普通でない条件を望む場合は、 `&&'`||' そして `?...:' オペレータが役に立つ でしょう。


Go to the first, previous, next, last section, table of contents.