读取ELF文件DWARF调试信息的库

26 投票
4 回答
37366 浏览
提问于 2025-04-15 12:46

有没有什么好的跨平台库,可以用来读取ELF文件中的DWARF格式的调试信息?我想在Python程序中读取这些DWARF调试信息。

4 个回答

7

你可能会对来自 pydevtools 的 DWARF 库感兴趣:

>>> 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
[...]
12

“ELF调试信息”这个概念其实并不存在:ELF的规范故意没有详细说明.debug部分的内容。

常见的调试格式有STAB和DWARF。用来读取DWARF的一个库是libdwarf

31

有个新玩意儿出现了,叫做 pyelftools,这是一个用纯Python写的库,可以用来解析ELF和DWARF格式的文件。你可以试试看。

这个库的目标是功能齐全,现在还在积极开发中,所以如果遇到什么问题,开发者会迅速而热情地处理这些问题 :-)

撰写回答