【问题标题】:Size of a hex in GDB's x memory-dump commandGDB 的 x memory-dump 命令中的十六进制大小
【发布时间】:2018-11-13 07:10:15
【问题描述】:

我正在尝试在程序集中尝试x 命令的所有变体。我输入了

(gdb) x /x $rsp
0x7fffffffdf90: 0x01

根据我的书 x/x 命令从 rsp 中选择前 8 个字节并将它们写为十六进制。但是,在查找程序集文档(gdb 帮助)时,我还没有找到 /x 的大小明确为 8 字节的任何地方。那么我怎么知道它是否真的是 8 个字节呢?

【问题讨论】:

  • 使用大于 1 的计数来查看分组是什么,到下一个地址的差距是多少。或者转储一些在高字节中绝对没有零的东西,因为0x01 和0x00000001 可能都打印相同,但0xDEADBEEF 明确(至少)4 个字节。

标签: assembly gdb


【解决方案1】:

那么我怎么知道它是否真的是 8 个字节呢?

不是。它是“您上次使用的任何尺寸”。 Documentation.

例如:

(gdb) x/bx $rsp
0x7fffffffcbc8: 0x1c

后续的x/x 命令将使用大小 1(单个字符):

(gdb) x/x $rsp
0x7fffffffcbc8: 0x1c

您可以显式覆盖大小:

(gdb) x/gx $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c

后续x/x 命令现在默认大小为 8:

(gdb) x/x $rsp
0x7fffffffcbc8: 0x00007ffff7ddc61c

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-07
    • 2011-06-01
    • 2011-12-09
    • 2012-04-21
    • 1970-01-01
    相关资源
    最近更新 更多