ブレイクポイントをすべて削除
delete
特定のアドレスの値が書き換わった時ブレイクしたい場合
まずアドレスを取得する。
(gdb) p &(foo->bar)
$39 = (MyData *) 0x80cb978
(gdb) watch *((MyData*)0x80cb978)
Hardware watchpoint 7: *(MyData *) 135051640
(gdb) c
単純に watch foo->barとしただけだと、fooの有効な名前空間から出た瞬間にwatchpointが無効になってしまう。次に、watch 0x80cb978とすると、これはそもそもポインタのアドレスなので、これは変化しない。ついでに、これだとhardware watchpointにならない。
ではどうするかというと、上の例のように、まずアドレスを渡し、それは、MyDataへのポインタだと明示し、それの指すアドレスの内容をwatchせよと指示する。