Где хранится таблица символов? - PullRequest
0 голосов
/ 20 сентября 2018

Я изучаю компиляторы, и мне вдруг стало любопытно, что если я скомпилирую программу (скажем, test.c) с опцией -g, будет ли создаваться и храниться где-то реальный файл с таблицей символов, или он просто получитв сочетании с исполняемым файлом?

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

Спасибо!

1 Ответ

0 голосов
/ 20 сентября 2018

Формат объектного файла ELF (который генерирует gcc на многих распространенных платформах) - это контейнерный формат, который может содержать множество различных типов информации.Он всегда содержит таблицу символов внешних связанных символов (определенных или необходимых из библиотеки).Кроме того, если было указано -g, файл ELF будет содержать много информации, используемой только отладчиком, включая все используемые локальные символы.

Вы можете использовать objdump --debugging или readelf --debug-dump для просмотраотладочная информация в несколько удобочитаемом формате.Удачи!

В отладочной информации, как правило, не содержится фактического исходного кода.Вы найдете имя исходного файла и номера строк, соответствующие различным блокам скомпилированного кода.Отладчик читает файл исходного кода, чтобы сообщить строки исходного текста;это не будет работать должным образом, если файл исходного кода был отредактирован с момента компиляции исполняемого файла.

...