我正在使用gdb和libbfd从elf文件中检索全局变量信息并显示它。 我可以从libbfd获取以下数据:全局变量名称,地址和大小。 我使用gdb和gdb \ MI(ptype,whatis,-var-create& -var-list-children)检索变量及其子代的类型。
如何从所有孩子的父母那里获得地址\尺寸\偏移?
e.g
type = struct {\n"
unsigned char count;\n"
unsigned char time;\n
}\n
如果此类型的变量A在地址0x000100中,我想显示A.count在0x000100中,大小为0x1,而A.time在0x000101中,大小为0x1。
编辑: 我已经读过gdb可以读取DWARF信息,但我无法弄清楚如何从gdb获取此信息。
答案 0 :(得分:3)
这是我最终做的。 要获得大小,我使用了:
p sizeof(A.time)
并获取我使用的地址:
p /a &A.time
注意:这仅适用于大于1个字节的变量。 为了能够获得位域大小和位偏移量,我不得不根据nabble中提出的建议重新编译GDB:Address of bitfield element bug?