我在64位计算机上使用GDB:
(gdb) show arch
The target architecture is set automatically (currently i386:x86-64)
(gdb) p sizeof(void*)
$1 = 8
我的指针存储在0x600fe8
:
(gdb) x /xg 0x600fe8
0x600fe8: 0x00007ffff7bd5680
我试着检查这里存储的指针指向的是什么,所以我使用了:
(gdb) x *0x600fe8
0xfffffffff7bd5680: Cannot access memory at address 0xfffffffff7bd5680
(gdb) x /g *0x600fe8
0xfffffffff7bd5680: Cannot access memory at address 0xfffffffff7bd5680
似乎gdb只使用了4个字节作为0x600fe8
的指针并对其进行了扩展。
我该如何解决这个问题?感谢。
没有找到我的情景:
答案 0 :(得分:2)
尝试:
0x600fe8
正如@zwol在评论中提到的那样,gdb需要有关操作数的类型信息来决定它的大小。这种类型转换告诉gdb {{1}}是指向指针的指针。