Самый «классический» способ получить исполняемый файл, содержащий отладочную информацию с GCC, - это указать параметр командной строки «-g», как упоминалось другими авторами. Это не приводит к снижению производительности, поскольку отладочная информация находится в разделах ELF, которые не являются частью кода или сегмента данных. То есть разделы .debug * не отображаются в память во время обычного выполнения программы, это только время отладки, когда отладчик получает их.
Другим полезным соображением для любого разработчика, работающего над производственным программным обеспечением, является использование отдельных файлов отладочной информации . Это предполагает компиляцию программы с «-g», как описано выше, а затем использование утилиты objcopy для копирования разделов ELF, содержащих отладочную информацию, в отдельный файл и добавления ссылки из исходного двоичного файла в отдельный файл отладочной информации. Это чрезвычайно полезно для возможности хранения отладочной информации для битов, которые вы выпустили для клиента, так что возможна отладочная посмертная отладка. И, конечно же, для профилирования производительности на выпускных битах.