GDB如何倒序查看内存

3
如果我有一个地址为0x7ffffffff000的栈顶,我想检查整个栈的内容,所以我需要向低地址显示它。
目前我这样做:
x/16x 0x7ffffffff000-64

但是这仍然是从低到高显示的。
0x7fffffffefc0: 0x782f756c  0x68747561  0x7469726f  0x43430079
0x7fffffffefd0: 0x45484341  0x5341485f  0x52494448  0x682f003d
0x7fffffffefe0: 0x2f656d6f  0x756c7079  0x7065722f  0x652f736f
0x7fffffffeff0: 0x742f7078  0x00747365  0x00000000  0x00000000

我希望您能提供类似下面这样的内容。
x/-16x 0x7ffffffff000
0x7fffffffeff0: 0x742f7078  0x00747365  0x00000000  0x00000000
0x7fffffffefe0: 0x2f656d6f  0x756c7079  0x7065722f  0x652f736f
0x7fffffffefd0: 0x45484341  0x5341485f  0x52494448  0x682f003d
0x7fffffffefc0: 0x782f756c  0x68747561  0x7469726f  0x43430079

有没有一些神奇的gdb命令可以做到我想要的事情?
1个回答

6
根据这篇文章,最近已经在gdb 7.12中添加了以下功能:

GDB现在支持在“x”命令中使用负数来倒序查看给定地址之前的内存。

您只需要输入:
(gdb) x/-16x $rsp

他想要打印相同的内容,只是按照地址的顺序进行反向格式化,而不是将内容本身反向。 - sunhang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接