Получить список исходных файлов (и местоположений) из двоичного файла

Я работаю в дистрибутиве Linux. Я пишу программу на C / C ++, которая требует список исходных файлов, с которыми был скомпилирован двоичный файл (исполняемый файл). Конечно, я скомпилировал бинарный файл, используя GCC с флагом -g. С помощью GDB Я узнал, что формат двоичного файла — DWARF2:

(gdb) info source
Current source file is src/main.cpp
Compilation directory is /path/to/source
Located in /path/to/source/src/main.cpp
Contains 43 lines.
Source language is c++.
Compiled with DWARF 2 debugging format.
Does not include preprocessor macro info.

С помощью objdump или же elfread Я вижу информацию, которая мне нужна:

bash> objdump -W binary
...
The File Name Table:
Entry Dir Time    Size    Name
1 1   0   0   main.cpp
2 2   0   0   curses.h
3 3   0   0   tprint.h
4 3   0   0   twindow.h
5 4   0   0   locale.h
...

С помощью dwarfdump Я вижу, что переменные, представляющие интерес: DW_AT_comp_dir а также DW_AT_decl_file. Используя простой скрипт bash (несколько Grep а также СЕПГ звонки) Мне удалось получить список источников. То, что я хотел бы сделать, это получить этот список исходных кодов из программы на C / C ++. Для этого я установил libdwarf, но из-за отсутствия примеров использования я не могу легко реализовать то, что хочу.

Мои вопросы:
1) Может ли кто-нибудь предоставить пример C / C ++, который читает отладочную информацию из двоичного файла? Это не обязательно должно быть с libdwarf, если есть другие библиотеки, которые могут это сделать.
2) Может ли GDB предоставить список источников? В конце концов я хотел бы создать свой собственный интерфейс для GDB и прокручивать доступные исходные файлы.

С уважением

3

Решение

Может ли GDB предоставить список источников?

Да: info sources

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]