Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   [решено] Работа с отладочными символами (http://forum.oszone.net/showthread.php?t=353626)

lxa85 30-05-2023 08:45 3009730

Работа с отладочными символами
 
Здравствуйте.
Помогите найти документацию или объяснение, почему так происходит.

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

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

Код:

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

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

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

shisik 30-05-2023 17:35 3009761

Цитата:

Цитата lxa85
Если переименую Deep.cpp в Deep_1.cpp gdb с задачей list не справится.
Следовательно исходника внутри нет. »

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

lxa85 30-05-2023 21:35 3009776

shisik, например по абсолютному пути?
Вполне может быть, поищу в эту сторону.

shisik 31-05-2023 00:36 3009782

Похоже так и есть, собрал простейшую программку типа

Код:

int main() {
  return 0;
}

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

Код:

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

Код:

main.cpp/absolute/path/to/source

Sham 31-05-2023 15:39 3009813

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

lxa85 31-05-2023 19:13 3009822

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


Время: 02:15.

Время: 02:15.
© OSzone.net 2001-