Я могу установить точку останова в основном и отладить код с корректным исходным кодом, но я не знаю, откуда gdb берет исходный код.
Исходный код не присутствует в CWD.
Как найти, от которого местоположение gdb действительно ли взятие является кодом?
You can use gdb command:
info source
Sample output:
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.
use
(gdb) show directories
if you don't know where those directories get set check into your .gdbinit if there are statements like
directory /path/to/source
see also this other SO Thread about gdb
Эта информация хранится в двоичном формате в формате DWARF2 . Итак, чтобы увидеть информацию DWARF2, вы можете использовать утилиту dwarfdump. Необходимая информация хранится в поле DW_AT_comp_dir.
Use the gdb "show directories" command to see the source search path.
The binary is probably compiled with "-g" - i.e. debugging.