(gdb) p it
$2 = (item *) 0x6
(gdb) p *it
$3 = {next = 0x0, prev = 0x0, h_next = 0x0, time = 0, exptime = 0, nbytes = 7, refcount = 1, nsuffix = 6 '\006', it_flags = 2 '\002', slabs_clsid = 1 '\001', nkey = 6 '\006',
end = 0x7f0890b6e040}
(gdb) p *0x6
Cannot access memory at address 0x6
这里不是p *it
和p *0x6
相同吗?
答案 0 :(得分:1)
除非您在具有映射到地址0的实内存的嵌入式目标上,否则it
== 0x6
的值为 bogus (通常是空指针的结果)解除引用)。
gdb
打印*it
这一事实可能意味着gdb
中存在错误,但很难说。不幸的是,您没有说明您正在使用哪个版本的GDB以及哪个操作系统。
答案 1 :(得分:0)
gdb'p'命令只能用于打印变量值。 如果要检查内存,请查看there