在gdb watch一个变量时 continue后,提示失效
(gdb)watch this->isDirty
(gdb) c
.....
Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
这个一般是局部变量销毁了。已经出这个函数(或代码块)所以就不监视了。
但我这个变量是某对象的属性成员。不是局部变量。
所以就让gdb不是监视变量,而是一块内存
(gdb) p &isDirty
$9 = (bool *) 0x34a64c4
(gdb) watch *(bool*)0x34a64c4
Hardware watchpoint 8: *(bool*)0x34a64c4
(gdb) c
这就可以运行,当然要自己写下一个地址还是挺麻烦了所以可以写一句
eval "watch *(bool *)%p", &isDirty
就行了。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)