PDA

Показать полную графическую версию : [решено] Работа с отладочными символами


lxa85
30-05-2023, 08:45
Здравствуйте.
Помогите найти документацию или объяснение, почему так происходит.

Суть:
Есть исходный код, допустим :
https://github.com/Sehktel/DeepThought

В Linux загружаем, компилируем

g++ -g ./Deep.cpp -o ./Deep.out

Теперь, используя отладчик gdb я могу с помощью list получить исходный код.
Я могу переместить бинарный файл в системе (например в /tmp ) и все равно получить исходник.
Следовательно, есть предположение, что исходник находится внутри файла. Но нет.
Если переименую Deep.cpp в Deep_1.cpp gdb с задачей list не справится.
Следовательно исходника внутри нет. (?!)

Вопросы.

Как мне получить бинарный код, переносимый из системы в систему, чтобы в нем был исходный код (gdb list) ?
Как работает -g что я могу перемещать бинарь по системе, но не могу переименовать исходник ?
Может я не в ту сторону думаю и все намного проще и давно решено?
За ссылку на правильную документацию буду благодарен.


P.S. Поиграть в онлайн можно здесь: https://killercoda.com/thcode/course/DevSecOps/scenario2
Для работы приходится в недрах системе держать исходный код в открытом виде, что не хотелось бы.

shisik
30-05-2023, 17:35
Если переименую Deep.cpp в Deep_1.cpp gdb с задачей list не справится.
Следовательно исходника внутри нет. »

Может там сохраняется путь к исходным файлам и всё?

lxa85
30-05-2023, 21:35
shisik, например по абсолютному пути?
Вполне может быть, поищу в эту сторону.

shisik
31-05-2023, 00:36
Похоже так и есть, собрал простейшую программку типа

int main() {
return 0;
}

с параметром -g, дальше

cat main

и в выводе можно найти упоминание файла с путём, вот так:

main.cpp/absolute/path/to/source

Sham
31-05-2023, 15:39
-g это на самом деле -g2 https://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html
Там ещё -g3 c максимумом отладочной информации. Символьные таблицы и метаданные сохраняются под определённые форматы, где смысл ограничений по имени файла может быть зарыт глубоко в документации или в голове какого-то одного разработчика. Искать этот смысл вряд ли имеет смысл.

lxa85
31-05-2023, 19:13
shisik, спасибо. Нашел и увидел абсолютные пути в распечатке файла. (cat)
Sham, документ видел, но очевидно вдумчиво до нужных фраз не дочитал.




© OSzone.net 2001-2012