Assembly GDB的x内存转储命令中十六进制的大小

Assembly GDB的x内存转储命令中十六进制的大小,assembly,gdb,Assembly,Gdb,我正在尝试汇编中的所有x命令变体。我打字 (gdb) x /x $rsp 0x7fffffffdf90: 0x01 根据我的书,x/x命令从rsp中选择前8个字节,并将它们写入十六进制。但是,在查找汇编文档gdb帮助时,我没有发现/x的大小显式为8字节。那么我怎么知道它是否真的是8字节呢 那么我怎么知道它是否真的是8字节呢 不是。不管你上次用的是什么尺寸 例如: (gdb) x/bx $rsp 0x7fffffffcbc8: 0x1c 后续的x/x命令将使用大小为1的单个字符: (gdb)

我正在尝试汇编中的所有x命令变体。我打字

(gdb) x /x $rsp
0x7fffffffdf90: 0x01
根据我的书,x/x命令从rsp中选择前8个字节,并将它们写入十六进制。但是,在查找汇编文档gdb帮助时,我没有发现/x的大小显式为8字节。那么我怎么知道它是否真的是8字节呢

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

不是。不管你上次用的是什么尺寸

例如:

(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
那么我怎么知道它是否真的是8字节呢

不是。不管你上次用的是什么尺寸

例如:

(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

使用大于1的计数查看分组是什么,以及到下一个地址的间隔是多少。或者转储高字节中肯定没有零的内容,因为0x01和0x00000001可能打印相同的内容,但0xDEADBEEF至少有4个字节。请使用大于1的计数查看分组情况,以及与下一个地址的间隔。或者转储在高字节中肯定没有零的内容,因为0x01和0x00000001可能都打印相同的内容,但0xDEADBEEF无疑至少有4个字节。