gdb如何向后检查内存

时间:2015-12-13 22:29:32

标签: debugging gdb stack-trace

如果我有一个地址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 个答案:

答案 0 :(得分:4)

根据this message,此功能最近已添加到gdb 7.12:

  

GDB现在支持' x'中的负重复计数。命令        从给定地址检查内存向后

您只需输入:

(gdb) x/-16x $rsp