为什么GDB检查结果会因我是否事先检查了字符串而不同



我不明白为什么GDB在检查RAM地址时会返回不同的结果,这取决于我是否事先检查了字符串:

  • 如果我检查我的字符串(0x404028地址中的"你好,世界"(,当我从主函数检查地址时,GDB将返回一个字节(x/x 0x401110=0xb8(
  • 如果我在没有事先检查字符串的情况下检查主函数,GDB将返回4个字节(x/x 0x401110=0x000001b8(

检查进一步的地址表明0x401111本质上是0x401110移位了1个字节,依此类推。我想知道哪一个是准确的,0x401110实际上指的是4个字节还是一个字节。两个结果+x86_64汇编源代码

help x表示:

格式和大小字母的默认值是以前使用的。

显然,s格式隐式地将大小设置为字节大小。

您可以通过添加bw大小说明符来手动指定大小:

x/xw 0x401110(32位(

x/xb 0x401110(8位(

最新更新