gdb\bfd:获取子变量地址或大小或偏移量
我正在使用 gdb 和 libbfd 从 elf 文件中检索全局变量信息并显示它。 我可以从 libbfd 获取以下数据:全局变量名称、地址和大小。 我使用 gdb 和 gdb\MI 检索变量及其子变量的类型(ptype、whatis、-var-create 和 -var-list-children)。
如何从所有孩子的父母那里获取地址\大小\偏移量?
例如,
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 获取此信息。
I'm using gdb and libbfd to retrieve global variables information from an elf file and show it.
I can get the following data from libbfd: Global Variable name, address and size.
I retrieve the type of the variables and its children using gdb and gdb\MI (ptype, whatis, -var-create & -var-list-children).
How can I get the address\size\offset from parent of all the children?
e.g
type = struct {\n"
unsigned char count;\n"
unsigned char time;\n
}\n
If a variable A of this type is in address 0x000100, I want to show that A.count is in 0x000100 with size 0x1 and A.time is in 0x000101 with size 0x1.
EDIT:
I've read that gdb can read the DWARF info, but I can't figure out how can I get this information from gdb.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
这就是我最终所做的。
为了获取大小,我使用了:
为了获取地址,我使用了:
注意:这仅适用于大小大于 1 字节的变量。
为了能够获取位域大小和位偏移量,我必须根据 nabble 中提供的建议重新编译 GDB: 位域元素错误的地址?
Here's what I did eventually.
To get the size, I used:
and to get the address I used:
NOTE: This only applies for variable of a size bigger then 1 byte.
To be able to get bitfields size and offset in bits, I had to recompile GDB according to the suggestion offered in nabble: Address of bitfield element bug?