att*_*tis 2 c debugging elf dwarf
因此,我试图使用libdwarf解析程序的DWARF文件(为此,我必须坚持使用C),我试图从每个DIE专门获取DW_AT_type标记。其中大多数(我不确定是否全部)都是偏移量,我试图找到任何有用的函数来获取这些标记的值。
例:
<2> <286>
DW_AT_type <156>
我在这里想要的是该特定DIE的type属性的156偏移值。
你们知道API是否提供执行此功能的功能吗?
注意:我必须坚持使用C,所以请不要推荐任何python库或对dwarfdumped文件的解析。我只是在寻找一个特定的功能,但是在过去的几天里一直在尝试,并且在文档中找不到任何功能。
如您所知,DW_AT_type是对另一个DIE的引用。
libdwarf提供了各种名为dwarf_form *的函数,用于将属性原始值转换为有意义的类型。就您而言,您正在寻找dwarf_global_formref函数。
由于dwarf中的引用定义为从调试信息开始到您要查找的DIE的偏移量,因此请使用find的引用调用dwarf_offdie_b。
没有错误检查的示例代码:
// Dwarf_Debug dbg, Dwarf_Die die already initialized
Dwarf_Attribute attr;
Dwarf_Off offset;
Dwarf_Die typedie;
dwarf_attr(die,DW_AT_type,&attr,NULL);
dwarf_global_formref(attr,&offset,NULL);
dwarf_offdie_b(dbg,offset,1,&typedie,NULL);
Run Code Online (Sandbox Code Playgroud)
确保检查手册中每个参数的确切含义。
| 归档时间: |
|
| 查看次数: |
1240 次 |
| 最近记录: |