2013-06-16 7 views
1

Я хотел бы создать программу в C под Windows, используя библиотеку libdwarf, которая может извлекать информацию о переменной, заданной в качестве входных данных. Программа должна выводить размер в байтах переменной и типа (без знака, подписи, поплавка).Libdwarf - как извлечь размер и тип переменной из файла ELF

До сих пор мне удалось скомпилировать библиотеку под Windows, но мне сложно определить все функции библиотеки. Мне нужна функция, которая принимает строку (имя переменной) и выводит смещение DIE. После этого я могу использовать другие функции для извлечения атрибута type при заданном смещении DIE.

Существует ли такая функция?

ответ

0

Windows использует формат PE, а не ELF, для исполняемых файлов, поэтому кажется странным, что вы делаете это под окнами.

Использование libdwarf должно быть возможным для определения размера и типа переменной, но в библиотеке нет функции, которая работает на этом высоком уровне. Я считаю, что вам нужно сделать примерно 1. перебирать единицы компиляции с помощью dwarf_next_cu_header 2. Получить первый DIE в CU с dwarf_siblingof 3. Пройти дерево DIE, чтобы найти DIE, в котором вы нуждаетесь 4. Получите информацию об этом DIE