我正在使用肾盂工具读取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_type
和DW_AT_name
等于结构名称的DIE。
枚举它下面的DW_TAG_member
子分区。在那里,看看DW_AT_member_location
,它是相应结构元素的偏移量。
如果您先从视觉上看一下DIE结构,这可能会有所帮助。DWARF Explorer可能会有所帮助(免责声明:我写的(。