Найдите путь к исходному коду исполняемого файла, который в настоящее время отлаживается в gdb

Я могу установить точку останова в главном и отлаживать код с правильным исходным кодом, но я не знаю, откуда gdb берет исходный код.

Исходный код отсутствует в CWD.

Как найти, из какого места gdb берет код?

Ответы

Ответ 1

Вы можете использовать команду gdb:

info source

Пример вывода:

Current source file is a.c
Compilation directory is /home/user/test
Located in /home/user/test/a.c
Contains 17 lines.
Source language is c.
Compiled with DWARF 2 debugging format.
Includes preprocessor macro info.

Ответ 2

Эта информация хранится в двоичном формате в формате DWARF2. Итак, чтобы увидеть информацию DWARF2, вы можете использовать утилиту dwarfdump. Необходимая информация хранится в поле DW_AT_comp_dir.

Ответ 3

использовать

(gdb) show directories

если вы не знаете, где эти каталоги будут установлены в ваш .gdbinit, если есть такие выражения, как

directory /path/to/source

см. также этот другой SO-поток о gdb

Ответ 4

Бинарный файл, вероятно, скомпилирован с помощью "-g" - то есть отладки.

Ответ 5

Используйте команду "показать каталоги" gdb, чтобы увидеть исходный путь поиска.