GDB监控点watchpoint 监控问题
int* func_6()
{
int* p = new int;
*p = 1;
return p;
}
int main(int argc, char** argv)
{
int* pNewValue = func_6();
printf("pNewValue %d\n", *pNewValue);
*pNewValue = 2;
printf("pNewValue %d\n", *pNewValue);
return 0;
}
(gdb) b func_6()
...
(gdb) watch p
Hardware watchpoint 2: p
(gdb) c
Continuing.
Hardware watchpoint 2: p
Old value = (int *) 0x603030
New value = (int *) 0x603050
func_6 () at thread.cpp:150
150
(gdb) c
Continuing.
Watchpoint 2 deleted because the program has left the block in
which its expression is valid.
0x00000000004008b2 in main (argc=1, argv=0x7fffffffe688) at thread.cpp:105
105 delete pObj;
我监控了 func_6 函数里面的p的地址,想看看p的修改情况,但p返回出来后删除了,检控不了,但外面的pNewValue 继续接管p的值,能不能检控p的同时检控pNewValue 的值,知道这个变量一直的修改情况。