C/C++ - [решено] Работа с отладочными символами

Ответить
Аватара пользователя
lxa85

C/C++ - [решено] Работа с отладочными символами

Сообщение lxa85 »

Здравствуйте.

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



Суть:

Есть исходный код, допустим :

https://github.com/Sehktel/DeepThought




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





Код:

Код: Выделить всё

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

Теперь, используя отладчик gdb я могу с помощью list [/i]получить исходный код.

Я могу переместить бинарный файл в системе (например в /tmp ) и все равно получить исходник.

Следовательно, есть предположение, что исходник находится внутри файла. Но нет.

Если переименую Deep.cpp в Deep_1.cpp gdb с задачей list не справится.

Следовательно исходника внутри нет. (?!)



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

P.S. Поиграть в онлайн можно здесь:
https://killercoda.com/thcode/course...cOps/scenario2


Для работы приходится в недрах системе держать исходный код в открытом виде, что не хотелось бы.
Аватара пользователя
shisik

Re: C/C++ - [решено] Работа с отладочными символами

Сообщение shisik »

Цитата lxa85:



Если переименую Deep.cpp в Deep_1.cpp gdb с задачей list не справится.

Следовательно исходника внутри нет.
C/C++ - [решено] Работа с отладочными символами




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

Re: C/C++ - [решено] Работа с отладочными символами

Сообщение lxa85 »

shisik, например по абсолютному пути?

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

Re: C/C++ - [решено] Работа с отладочными символами

Сообщение shisik »

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





Код:

Код: Выделить всё

int main() {
  return 0;
}

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





Код:

Код: Выделить всё

cat main

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





Код:

Код: Выделить всё

main.cpp/absolute/path/to/source
Аватара пользователя
Sham

Re: C/C++ - [решено] Работа с отладочными символами

Сообщение Sham »

-g это на самом деле -g2
https://gcc.gnu.org/onlinedocs/gcc/D...g-Options.html


Там ещё -g3 c максимумом отладочной информации. Символьные таблицы и метаданные сохраняются под определённые форматы, где смысл ограничений по имени файла может быть зарыт глубоко в документации или в голове какого-то одного разработчика. Искать этот смысл вряд ли имеет смысл.
Аватара пользователя
lxa85

Re: C/C++ - [решено] Работа с отладочными символами

Сообщение lxa85 »

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

Sham, документ видел, но очевидно вдумчиво до нужных фраз не дочитал.
Ответить

Вернуться в «Программирование и базы данных»