任何人都可以帮我编写一个可以读取DWARF文件的程序,并为我提供文件名,行号和函数名称的详细信息。
答案 0 :(得分:4)
DWARF-2&的规范DWARF-3在这里:
http://dwarfstd.org/dwarf-2.0.0.pdf
http://dwarfstd.org/Dwarf3.pdf
这里有一个很好的库来读取DWARF文件:
http://reality.sgiweb.org/davea/dwarf.html
您可以获取并使用该库来读取DWARF文件(它读取DWARF-2和DWARF-3),或者您可以查看源代码以解释如何编写自己的库/函数集做这个工作。
答案 1 :(得分:1)
你可以看看binutils中的avr-readelf。 binutils / dwarf.c中的display_debug_lines()函数负责解码DWARF linenumber信息。
另外,如上所述,您可以使用libdwarf。这样可以很好地隐藏DWARF的低级复杂性,并让您专注于获取数据。
使用elfdescriptor设置libdwarf并获取Dwarf_Debug结构后,您可以执行以下操作: