如何获取结构成员的地址信息?

How can I get address info on a structure member?

我正在尝试使用 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" 命令,其中 returns 结构的定义,从中我可以计算相对地址和绝对地址,但我认为这不是一种有效的方法完成任务。

你知道其他获取结构成员地址的方法吗?

提前致谢, 塔马斯

在 GDB 中您可以:

(gdb) print myStruct
 = {a = 1, b = 2, c = 3}
(gdb) print &myStruct
 = (tstructDesc *) 0x600a58 <myStruct>
(gdb) print &myStruct.a
 = (int *) 0x600a58 <myStruct>
(gdb) print &myStruct.b
 = (int *) 0x600a5c <myStruct+4>
(gdb) print &myStruct.c
 = (int *) 0x600a60 <myStruct+8>