-->

图书馆阅读ELF文件矮调试信息(Library to read ELF file DWARF deb

2019-06-25 11:01发布

一个良好的跨平台库的任何建议侏儒格式阅读ELF文件的调试信息? 我想读一个Python程序矮调试信息。

Answer 1:

有一个在块的新的孩子- pyelftools -一个纯Python库解析ELF和DWARF格式。 试试看。

它的目标是成为功能完善,目前在积极发展,所以任何问题,应迅速和积极处理:-)



Answer 2:

的“ELF调试信息”的概念根本不存在:ELF规范离开的.debug节故意不确定的内容。

常见的调试格式STAB和DWARF 。 阅读矮人库libdwarf 。



Answer 3:

您可能感兴趣的从DWARF库pydevtools :

>>> from devtools.dwarf import DWARF
>>> dwarf = DWARF('test/test')
>>> dwarf.get_loc_by_addr(0x8048475)
('/home/emilmont/Workspace/dbg/test/main.c', 36, 0)
>>> print dwarf
.debug_info
COMPILE_UNIT<header overall offset = 0>
<0><11> compile_unit
producer: GNU C 4.4.3
language: C89
name: a/test.c
comp_dir: /home/emilmont/Workspace/dbg/test
low_pc: 0x080483e4
high_pc: 0x08048410
stmt_list: 0
[...]


Answer 4:

您的阅读矮调试信息的选项是不幸的是相当有限的。

据我所知,只有一个用于解析矮调试信息的通用库,这是libdwarf 。 不幸的是没有人写过Python绑定libdwarf(也许你可以把它高举在自己和与其他人:)分享)你当然可以尝试使用访问库的功能ctypes的或Python的C API 。

甲少得多优雅的解决方案,但是,是使用现有的矮解析器和解析它输出该文本信息。 您的这个选项(在Linux上)是

objdump -W
readelf --debug-dump=[OPTIONS]

我目前使用过建立的readelf一个项目,它的支持是非常全功能的DWARF调试信息。 你可以简单地使用Python在shell执行任意命令,然后解析的信息,你所需要的。 当然不是理想的库,但应该做的伎俩。

编辑:我在你提到的Windows之前的评论注意到。 这两个程序(objdump的和readelf)是GNU-的binutils的一部分,所以他们应该可以使用Cygwin MinGW的或。



文章来源: Library to read ELF file DWARF debug information