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

Debugging (gdb)获取寄存器指示的内存地址值,debugging,assembly,x86,gdb,Debugging,Assembly,X86,Gdb,我正在进行一个调试项目,该项目要求我使用GDB查看汇编代码。 一行内容为movzbl(%ebx),%eax。 据我所知,这会将(%ebx)的最低有效字节复制到%eax,并在所有较高有效位上添加零 现在,我正在尝试使用GDB来找出(%ebx)中的值 info registers告诉我%ebx处的值是0x804a6ac。据我所知,要获取(%ebx)处的值,我希望该值位于地址0x804a6ac。 如何获得该值? 我知道,在运行movzbl(%ebx),%eax之后,%eax的值为0x41。 因此,我怀

我正在进行一个调试项目,该项目要求我使用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=值无法转换为整数。
。 另外,我尝试执行
p/x%ebx
,但是我得到了“表达式中的语法错误,靠近“%ebx”。

用于此操作的“标准”命令是
x/cx$ebx


这比
p/x*0x804a6ac
好,因为你不必剪切/粘贴
$ebx

那么
p/x*0x804a6ac
看起来我明白了:
p/x{char*}0x804a6ac
给了我
$18=0x69626d41
。编辑:哦,我刚看到杰瑞的帖子。这也奏效了。谢谢
p/x*(char*)$ebx可以工作,也可以根据需要转换为任何其他类型,包括要重复的数组类型。但是强制转换更多的是类型化,如果没有它,您将尝试取消对泛型指针的引用。