Загрузчик ELF загружает сегменты , а не секции ;отображение разделов на сегменты определяется сценарием компоновщика, используемым для построения исполняемого файла.
Стандартный сценарий компоновщика не отображает отладочные разделы ни на один сегмент, поэтому он опущен.
Информация о символахпоставляется в двух вариантах: статические символы обрабатываются вне диапазона и никогда не сохраняются как данные раздела;динамические таблицы символов генерируются компоновщиком и добавляются в специальный сегмент, который загружается вместе с исполняемым файлом, поскольку он должен быть доступен динамическому компоновщику.Команда strip
удаляет только статические символы, которые никогда не упоминаются в сегменте.
Таким образом, вы можете использовать полную отладочную информацию в течение всего процесса, и это не повлияет на размер исполняемого образа.в оперативной памяти, так как он не загружен.Это также означает, что информация не включена в дампы ядра, поэтому здесь вы также не получите никаких преимуществ.
Утилита objcopy
имеет специальную опцию для копирования только отладочной информации, поэтому вы можете сгенерироватьвторой файл ELF, содержащий эту информацию и использующий раздельные двоичные файлы;при анализе дампа ядра вы можете загрузить оба файла в отладчик:
objcopy --only-keep-debug myprogram myprogram.debug
strip myprogram