データブレークポイントとはある変数の値が変更されたりしたときにブレークするブレークポイントです。以下のソースにおいて19行目のf3()の呼び出し後、iの値が変わったときブレークしたいとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
#include <stdio.h> void f1(int* p) { *p += 1; } void f2(int* p) { f1(p); } void f3(int* p) { f2(p); } int main() { int i=0; f3(&i); printf("%d\n",i); return 0; } |
まず普通にステップ実行して19行目まで来ます。ここでiのアドレスを知る必要があります。メニューからデバッグウインドウ逆アセンブルを開きアセンブラでステップ実行すると以下のようになります。
このときeaxレジスタに入るのがiのアドレスです。メニューからデバッグブレークポイントの作成新しいデータブレークポイントを選択し、この値を以下のようにデータブレークポイントで設定します。
(この例では実際にアドレスを調べる必要はなく、上のダイアログでは&iと打ち込めばよかったみたいです)
OKをクリックして、実行を再開すれば、以下のようにiの値が変化した直後にメッセージボックスが表示されブレークします。