Библиотека для чтения файла отладки ELF DWARF

Любые рекомендации для хорошей кроссплатформенной библиотеки для чтения отладочной информации файла ELF в формате DWARF? Я хотел бы прочитать отладочную информацию DWARF в программе на Python.

 Nick Dandoulakis09 июл. 2009 г., 03:12
Вы можете найти полезную информацию здесь: -David A's DWARF Page - SO question

Ответы на вопрос(4)

спецификация ELF оставляет содержание раздела .debug намеренно неопределенным.

Распространенными форматами отладки являются STAB иDWARF, Библиотека для чтения DWARFlibdwarf.

 Craig McQueen09 июл. 2009 г., 04:31
Я обновил вопрос соответственно.
 Craig McQueen09 июл. 2009 г., 04:28
Да, совершенно верно. DWARF - это то, что меня интересует.
 Craig McQueen14 июл. 2009 г., 09:59
Является ли libdwarf кроссплатформенным, вы знаете? Страница не говорит, но, похоже, имеет общий вкус Unix.
 14 июл. 2009 г., 14:11
Я не пытался перенести его. Кажется, что в нем есть некоторые особенности Unix (например, в исполняемом файле darfdump); это также основано на клевете. Однако перенести его на другую систему не составит труда.
 23 сент. 2009 г., 08:00
Я успешно портировал libdwarf для компиляции на windows с Visual Studio 2008.
Решение Вопроса

pyelftools - чистая библиотека Python для анализа форматов ELF и DWARF. Попробуйте.

Он стремится быть полнофункциональным и в настоящее время находится в активной разработке, поэтому любые проблемы должны решаться быстро и с энтузиазмом :-)

к сожалению, весьма ограничены.

Насколько я знаю, есть только одна библиотека общего назначения для анализа отладочной информации DWARF, и этоlibdwarf, К сожалению, никто не написал Python-привязки для libdwarf (возможно, вы могли бы взять его на себя и поделиться им со всеми остальными :)) Вы наверняка могли бы попытаться получить доступ к функциям библиотеки, используяctypes илиPython C API.

Однако гораздо менее элегантное решение - использовать существующий анализатор DWARF и анализировать выводимую им текстовую информацию. Ваши варианты для этого (в Linux):

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

В настоящее время я использую проект, основанный на readelf, и он поддерживает отладочную информацию DWARF очень полнофункционально. Вы можете просто использовать Python для выполнения любой команды в оболочке, а затем анализировать информацию по мере необходимости. Конечно, не так идеален, как библиотека, но должен сделать свое дело.

РЕДАКТИРОВАТЬ: я заметил в предыдущем комментарии вы упомянули Windows. Обе эти программы (objdump и readelf) являются частью GNU-binutils, поэтому они должны быть доступны с Cygwin или mingw.

 20 июл. 2016 г., 16:37
естьdwarfdump, тоже.

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
[...]
 31 окт. 2011 г., 12:14
 Craig McQueen01 нояб. 2011 г., 21:52
Большой! В документации не упоминаются поддерживаемые платформы. Это работает на Windows?
 Craig McQueen06 сент. 2010 г., 02:28
Это приятно знать. Пара вопросов: 1) Какие платформы поддерживаются (Windows, Linux)? 2) Можете ли вы положить его наPyPI?
 Craig McQueen01 дек. 2011 г., 01:44
Я посмотрел на него, и он не читает мои файлы ELF (из компилятора GCC, нацеленного на встроенный ARM). Я предполагаю, что это частичная реализация. Должен ли я предоставить вам образцы файлов ELF?

Ваш ответ на вопрос