使用肾盂工具获取结构的成员的地址



我正在使用肾盂工具读取elf文件。如何获取结构中成员的偏移值或地址?例如,假设我在C.中有以下结构

typedef struct 
{
int valA;
} TsA;
typedef struct
{
int valB;
} TsB;
typedef struct 
{
int valC;
TsB b;
} TsC;
typedef struct
{
TsA a;
TsC c;
} TsStruct;
TsStrcut myStruct;

如何获取myStruct.c.b.valB的地址?我在这里找到了一个类似的问题,但没有找到任何好的答案。

查找结构的DIE,标签DW_TAG_structure_typeDW_AT_name等于结构名称的DIE。

枚举它下面的DW_TAG_member子分区。在那里,看看DW_AT_member_location,它是相应结构元素的偏移量。

如果您先从视觉上看一下DIE结构,这可能会有所帮助。DWARF Explorer可能会有所帮助(免责声明:我写的(。

最新更新