使用地址在gdb中打印结构类型的值

时间:2019-02-27 16:11:43

标签: c struct gdb

给出一个结构类型变量的地址,假设:0x61b2e0。 我知道此地址指向类型为s_a的结构,该结构定义为

typedef struct {

int n;
char *v;

} s_a;

如何使用我知道的地址打印此结构字段的值。

谢谢

3 个答案:

答案 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))

相关问题