Для чего используются файлы карт компоновщика gcc?
Что есть ".map "файлы, сгенерированные опцией компоновщика gcc / g++ "- Map " используется для ? И как их читать ?
2 ответов
Я рекомендую создать файл карты и сохранить копию для любого программного обеспечения, которое вы вводите в производство.
Это может быть полезно для расшифровки отчетов о сбоях. В зависимости от системы вы, вероятно, можете получить дамп стека из аварии. Дамп стека будет включать адреса памяти, а один из регистров будет включать указатель инструкции. Это говорит вам, что код адреса памяти выполнялся. В некоторых системах адреса кода можно перемещать (при загрузке динамических библиотек, следовательно, динамический), но байты нижнего порядка должны оставаться неизменными.
файл карты-это карта из памяти - > расположение кода. Он дает вам имя функции по заданному адресу памяти. Из-за оптимизации он может быть не очень точным, но он дает вам возможность начать с поиска ошибок, которые вызывают сбой.
теперь, за 30 лет написания коммерческого программного обеспечения, это единственное, для чего я использовал файлы карт. Дважды успешно.
что есть ".map "файлы, сгенерированные опцией компоновщика gcc / g++ "- Map " используется для?
нет такой вещи, как "gcc linker" -- GCC и linker являются независимыми и отдельными проектами.
как правило, карта используется для понимания решений, которые ld
сделано при связывании двоичного файла. От man ld
:
-M
--print-map
Print a link map to the standard output.
A link map provides information about the link, including the following:
· Where object files are mapped into memory.
· How common symbols are allocated.
· All archive members included in the link, with a mention of the symbol which caused the archive member to be brought in.
· The values assigned to symbols.
...
если вы не понимаете, что это значит, у вас, вероятно, нет (пока) вопросов, на которые отвечает этот вывод, и, следовательно не нужно его читать.