あなたは、ブレークポイントによってプログラムが停止した時、ブレーク ポイントに対して一連のコマンドの起動を指定することができます。例えば、 あなたは変数値を式を使って表示したいかもしれませんし、他のブレーク ポイントを無効にしたくなるかもしれません。
commands bnum
ブレークポイントのコマンドはプログラムの再実行が可能です。 単に、`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値を持たせることで、プログラムが停止しないように指定した
ことになります。ここでは、ブレーク条件は端末モードを変更することなく
評価されるという理由によって、入力の消失を回避することができます。
あなたが副作用が引き起こすような普通でない条件を望む場合は、
`&&'、`||' そして `?...:' オペレータが役に立つ
でしょう。