gdb \ bfd:获取子变量地址或大小或偏移量

时间:2010-08-23 08:43:23

标签: gdb debugging binutils dwarf

我正在使用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获取此信息。

1 个答案:

答案 0 :(得分:3)

这是我最终做的。 要获得大小,我使用了:

p sizeof(A.time)

并获取我使用的地址

p /a &A.time

注意:这仅适用于大于1个字节的变量。 为了能够获得位域大小和位偏移量,我不得不根据nabble中提出的建议重新编译GDB:Address of bitfield element bug?