我不明白为什么GDB在检查RAM地址时会返回不同的结果,这取决于我是否事先检查了字符串:
- 如果我检查我的字符串(0x404028地址中的"你好,世界"(,当我从主函数检查地址时,GDB将返回一个字节(x/x 0x401110=0xb8(
- 如果我在没有事先检查字符串的情况下检查主函数,GDB将返回4个字节(x/x 0x401110=0x000001b8(
检查进一步的地址表明0x401111本质上是0x401110移位了1个字节,依此类推。我想知道哪一个是准确的,0x401110实际上指的是4个字节还是一个字节。两个结果+x86_64汇编源代码
help x
表示:
格式和大小字母的默认值是以前使用的。
显然,s
格式隐式地将大小设置为字节大小。
您可以通过添加b
或w
大小说明符来手动指定大小:
x/xw 0x401110
(32位(
x/xb 0x401110
(8位(