Увеличивает ли параметр команды -g (или --debug) загруженный объем памяти?

Есть ли -g (или же --debug) параметр команды clang увеличивает объем памяти, занимаемой скомпилированным приложением? В частности, меняет ли он размер двоичного файла, загруженного во встроенную систему ARM?

Примечание: я знаю, что отладочная сборка добавляет таблицу символов и некоторую дополнительную отладочную информацию в ELF, но это должно использоваться отладчиком, работающим на хост-машине (скажем, ПК с Eclipse). Вопрос в том, меняет ли он размер загруженного изображения.

1 ответ

Нет

В -gопция только добавляет отладочную информацию в двоичный файл, в разделы, которые не загружаются в память. Фактический код и генерируемые данные не затрагиваются.

Попробуйте бежать objdump -hв обеих версиях двоичного файла ELF. Вы увидите некоторые разделы, отмеченные атрибутом ALLOCа другие нет. Только отмеченные ALLOCзагружаются или выделяются памяти во время выполнения. Вы должны заметить, что эти разделы имеют одинаковый размер в обеих версиях; действительно, они должны иметь точно такое же содержимое, что вы можете проверить с помощью objdump --full-contents и diffесли хочешь. Отличия только в разделах, которые не отмечены ALLOC; они не загружаются в память и не действуют во время выполнения.

Другие вопросы по тегам