【问题标题】:Why GDB examination results differ depending on whether I examined a string beforehand?为什么 GDB 检查结果会根据我是否事先检查字符串而有所不同?
【发布时间】:2021-07-17 16:48:53
【问题描述】:

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

  • 如果我检查我的字符串(0x404028 地址中的“hello, world”),当我检查主函数中的地址时,GDB 会返回一个字节(x/x 0x401110 = 0xb8)
  • 如果我在没有事先检查字符串的情况下检查主函数,则 GDB 将返回 4 个字节 (x/x 0x401110 = 0x000001b8)

进一步检查地址表明 0x401111 本质上是 0x401110 移位了 1 个字节,依此类推。 我想知道哪个是准确的, 0x401110 实际上是指 4 个字节还是一个字节。 Both results + x86_64 Assembly source code

【问题讨论】:

    标签: assembly gdb x86-64 gnu


    【解决方案1】:

    help x 说:

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

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

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

    x/xw 0x401110(32 位)

    x/xb 0x401110(8 位)

    【讨论】:

      猜你喜欢
      • 2016-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-05
      • 2014-04-30
      • 2013-01-01
      相关资源
      最近更新 更多