如何获取结构成员的地址信息?
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>
我正在尝试使用 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>