我的结构变量指针存在问题。我刚开始使用GDB调试问题。由于分段错误,应用程序在下面的代码行上命中时停止。 ptr_var是指向结构的指针
ptr_var->page = 0;
据我所知,它将值“0”设置为结构指针的成员“页面”,该指针不再在内存中。我需要知道变量ptr_var何时从内存中丢失。但是,我不能执行命令
awatch *ptr
或
rwatch *ptr
GDB表示“无法使用读取/访问观察点实现表达式。”
我只能执行watch命令,它只停在
上面的同一行代码上watch *ptr_var
Program received signal SIGSEGV, Segmentation fault.
Watchpoint 2: *ptr_var
Old value = {
...
}
New value = <unreadable>
func1 (ptr_var=0x0) at sample.c:1829
1829 ptr_var->page = 0;
ptr_var->page = 0;
调试变量ptr_var的最佳或正确方法是什么?这样我就可以在ptr_var丢失内存时捕获指令。我在GDB中的回溯包含了很多库调用。
我是GDB的新手和普通的C程序员。非常感谢您对此事的帮助。谢谢。
*更新: 我刚刚在GDB中发现ptr_var被NULL地址覆盖。旧地址仍然在内存中,我仍然可以使用旧地址
打印结构成员的值