GDB不显示堆栈的十六进制值

时间:2012-04-08 02:39:51

标签: c++ c gdb hex

我正在尝试让GDB显示堆栈的十六进制值,所以我使用了命令x /48b $esp,这是我在Internet上看到的一个命令,它应该显示48字节的十六进制值。堆栈从堆栈指针指向的位置开始。但是,当我执行此命令时,我得到整数值(而不是一些负值)。一个例子如下所示:

(gdb) x /48b $esp
0xbffff200: 40  -14 -1  -65 24  -114    4   8
0xbffff208: 123 0   0   0   0   0   0   0
0xbffff210: 16  0   0   0   -3  -112    17  0
0xbffff218: -18 64  27  0   -1  -1  -1  -1
0xbffff220: 88  40  19  0   45  -9  17  0
0xbffff228: 38  38  -64 -14 -1  -65 -64 -14

之前我已经完成了这个命令(据我所知它是完全相同的命令),但突然之间似乎没有工作。有什么想法吗?

1 个答案:

答案 0 :(得分:4)

你可能错误地输入了你的命令:

  

格式字母是o(八进制),x(十六进制),d(十进制),u(无符号十进制),   t(二进制),f(浮点),a(地址),i(指令),c(char)和   S(字符串)。

您应该将此命令用于十六进制输出:x /48x $esp