Чтение файла DWARF в Mac OSX - PullRequest
6 голосов
/ 03 мая 2009

Может кто-нибудь помочь мне написать программу, которая может читать файлы DWARF и дает мне имя файла, номер строки и детали имени функции.

Ответы [ 2 ]

4 голосов
/ 03 мая 2009

Спецификация для 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 голос
/ 16 мая 2009

Вы можете взглянуть на avr-readelf в binutils. Функция display_debug_lines () в binutils / dwarf.c выполняет работу по декодированию информации о количестве белья в DWARF.

Также, как предложено выше, вы можете использовать libdwarf. Это делает хорошую работу по сокрытию низкоуровневых сложностей DWARF и позволяет вам сосредоточиться на получении данных.

После настройки libdwarf с помощью elfdescriptor и получения структуры Dwarf_Debug вы можете сделать следующее:

  1. Пройдите все единицы компиляции с помощью dwarf_srclines ()
  2. используйте dwarf_srclines () для каждого cu
  3. использовать dwarf_lineaddr () для каждой записи в массиве, возвращенной из dwarf_srclines ()
  4. не забудьте использовать dwarf_dealloc () в нужных местах.
...