假设有一个结构体类型变量的地址为:0x61b2e0。 我知道该地址指向类型为s_a的结构体,它的定义如下:
typedef struct {
int n;
char *v;
} s_a;
我如何通过我已知的地址打印此结构字段的值。
谢谢。
(gdb) p *((s_a *)(<address>))
可以帮助您打印由<address>
虚拟地址引用的结构体内容,即在您的情况下应为:(gdb) p *((s_a *)(0x61b2e0))
x/nfu addr
这里的/nfu
是可选的,其中
n - 根据选项u显示要显示的内存数量。前面的负号会导致读取时地址递减
f - 显示格式
u - 单位大小。例如,“h”对应于半字
对于给定的结构,根据您的机器读取两个整数大小将给出结构内容。第一个整数为n
的值,第二个整数为指针地址。因此,在这里进行两个字的读取,
x/2uw 0x61b2e0
p *((s_a*)(0x61b2e0))
- meowgoesthedog