给出一个结构类型变量的地址,假设:0x61b2e0。 我知道此地址指向类型为s_a的结构,该结构定义为
typedef struct {
int n;
char *v;
} s_a;
如何使用我知道的地址打印此结构字段的值。
谢谢
答案 0 :(得分:0)
您可以使用x
command从给定地址进行打印。
x (s_a*) 0x61b2e0
答案 1 :(得分:0)
要检查内存而不依赖程序的数据类型,gdb向x命令提供以下语法,
x/nfu addr
/nfu
是可选的,其中
n-根据选项u显示多少内存。前面的负号将导致读取的地址递减
f-显示格式
u-单位大小。例如,“ h”对应于半字
对于给定的结构,根据您的机器读取两个整数大小将给出该结构的内容。 n
的值的第一个整数,指针地址的第二个整数。因此,这里读了两个字,
x/2uw 0x61b2e0
答案 2 :(得分:0)
(gdb) p *((s_a *)(<address>))
应该可以帮助您打印<address>
虚拟地址引用的结构的内容
即在您的情况下将是:
(gdb) p *((s_a *)(0x61b2e0))