gdb调试指向结构不可读值的指针

时间:2015-10-22 01:56:45

标签: c linux ubuntu gdb watch

我的结构变量指针存在问题。我刚开始使用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地址覆盖。旧地址仍然在内存中,我仍然可以使用旧地址

打印结构成员的值

0 个答案:

没有答案