指定した変数の値が変化したときにプログラムの実行を停止するには、次のように入力します。
(dbx) stop change variable
stop change を使用するときの注意事項
dbx は、指定された変数の値に変更があった行の後ろの行でプログラムを停止します。
変数が関数の局所変数の場合、その関数に最初に制御が移り、変数のための記憶領域が割り当てられた時点で変更があったと見なします。パラメータについても、同じことが言えます。
dbx は、自動的なステップ実行を行い、各ステップで値を検査することによって stop change を実現しています。ステップ実行では、ライブラリ呼び出しは飛ばされます。したがって、制御の流れが次のようになっているとき、
user_routine calls library_routine, which calls user_routine2, which changes variable
dbx は入れ子になった user_routine2 をトレースしません。トレース時にライブラリ呼び出しと user_routine2 の呼び出しがスキップされるため、入れ子になった呼び出しをトレースしません。この結果、変数の値は user_routine2 ルーチンの中ではなく、ライブラリ呼び出しから戻った後に変更されたように示されます。
ブロック局所変数、すなわち、{} 内で定義された変数の変化に対するブレークポイントは設定できません。このような変数にブレークポイント (またはトレース) を設定しようとすると、その操作ができないことを示すエラーメッセージが出されます。