(gdb)获取寄存器指示的存储器地址的值

时间:2014-04-24 02:13:32

标签: debugging assembly x86 gdb

所以我正在研究这个需要我在gdb中查看汇编代码的调试项目。有一行读取movzbl (%ebx),%eax。我知道这会将(%ebx)的最低有效字节复制到%eax,并将零附加到所有更重要的位。我正在尝试使用gdb来查找(%ebx)的值。

info registers告诉我,%ebx的值为0x804a6ac。据我了解,要获得(%ebx)的值,我希望值位于地址0x804a6ac。我如何获得这个价值?我知道,在movzbl (%ebx),%eax运行后,%eax的值为0x41,所以我猜41(%ebx)中最不重要的字节,但我怎么能看到它的全部价值?

我尝试p/x $0x804a6ac,但我得$13 = Value can't be converted to integer.。我尝试了p/x %ebx,但我得到“表达式中的语法错误,靠近'%ebx'。”

1 个答案:

答案 0 :(得分:1)

"标准"对此的命令是x/cx $ebx

这比p/x *0x804a6ac要好,因为您不必剪切/粘贴$ebx的值。