【发布时间】:2016-06-02 00:51:54
【问题描述】:
我正在努力解析 ELF 文件 - 由 Infineon 的 Tricore CPU 的 Tasking 编译器编译后 *.elf 的 DWARF 内容。我无法匹配 .debug_abbrev 和 .debug_info,在我看来内容已损坏。 你们能指导我如何解析 .debug_info 内容吗?
.debug_abbrev;
...
04 (code)
05 (DW_TAG_compile_unit)
00 (no child)
03 08 (DW_AT_name, DW_FORM_string)
3A 0F (DW_AT_decl_file, DW_FORM_udata)
3B 0F (DW_AT_decl_line, DW_FORM_udata)
39 0F (DW_AT_decl_column, DW_FORM_udata)
49 13 (DW_AT_type, DW_FORM_ref4)
00 00 (end)
05 (code)
35 (DW_TAG_volatile_type)
00 (no child)
49 13 (DW_AT_type, DW_FORM_ref4)
00 00 (end)
06 (code)
0F (DW_TAG_pointer_type)
00 (no child)
49 13 (DW_AT_type, DW_FORM_ref4)
00 00 (end)
...
上面的 .debug_abbrev 内容我尝试解析 .debug_info 内容,但是很奇怪,可能解析错误,而且进一步解析不匹配,产生奇怪的结果。 我猜我的解析器出了点问题,但我不明白为什么。
.debug_info;
04 (04, code)
75 77 56 61 6C 75 65 00 (uwValue, DW_FORM_string)
01 (1, DW_FORM_udata)
8D 01 (8D, DW_FORM_udata)
1F (1F, DW_FORM_udata)
93 00 00 00 (00000093, DW_FORM_ref4)
00 (end)
05 (05, code)
93 00 00 00 (00000093, DW_FORM_ref4)
03 75 6E 73 69 67 6E 65 6E 73 69 67(???我应该如何解析它们???)
没有06(用于匹配代码06)...我无法再进行解析了。
对于 .debug_info 的开头部分,我已经很好地解析了,但从上面的观点来看,我无法完全理解我需要如何处理这些值。 我还阅读了 DWARF pdf 文件,但没有找到更详细的描述。
请指导我如何对它有更详细的了解,谢谢!
【问题讨论】: