【发布时间】:2014-04-24 02:13:32
【问题描述】:
我正在进行一个调试项目,该项目需要我使用 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'。”
【问题讨论】:
-
p/x *0x804a6ac怎么样 -
看来我明白了:
p/x {char *} 0x804a6ac给了我$18 = 0x69626d41。编辑:哦,我刚看到杰瑞的帖子。那也行得通。谢谢!
标签: debugging assembly x86 gdb