【发布时间】:2023-03-10 16:31:01
【问题描述】:
我正在尝试使用 gdb 从调试信息中获取结构成员的地址。
我的问题是我的结构如下:
typedef struct{
int a;
int b;
int c;
}tstructDesc;
tstructDesc myStruct =
{
1,
2,
3,
};
int main()
{
/* Do something */
}
使用 gdb,我可以使用命令 "info address myStruct" 获取 myStruct 结构的地址,但我想获取成员变量的地址(myStruct.a、myStruct. b,myStruct.c)。我发现了 "ptype myStruct" 命令,它返回结构的定义,我可以从中计算相对地址和绝对地址,但我认为这不是完成任务的有效方法。 p>
你知道其他获取结构成员地址的方法吗?
提前致谢, 塔马斯
【问题讨论】:
-
Tamas 原来 tsstructDexc 将是 3*sizeof(int) 所以 myStruct.a 的地址实际上就是 myStruct 的地址。在 gdb 中,您可以设置断点并执行以下操作: (gdb) p &myStruct 或 (gdb) p &mystruct.a
-
您给出的解决方案是正确的,但您的意思是“tsstructDexc 将是 3*sizeof(int)?”。要知道结构的大小,您必须使用 sizeof(structname):stackoverflow.com/questions/119123/…