Есть ли недостаток в том, чтобы оставлять символы отладки в выпусках?
Я пытаюсь определить, есть ли какие-либо недостатки для создания двоичных файлов с остальными символами отладки. Для наших версий сборки мы скомпилируем с -O3
на данный момент, и если есть какие-либо сбои, то ядра находятся рядом с бесполезно.
Итак, что бы я хотел сделать, это изменить сборку, чтобы оставить ее в отладочных символах, т.е. -O3 -g
, но есть сопротивление этому, поскольку ощущение состоит в том, что может быть какое-то влияние (кроме размера двоичного файла). Я знаю, что проблема с размером может быть исправлена путем удаления символов, но есть ли что-нибудь еще тонкое, что мне не хватает?
Ответы
Ответ 1
Отдельные символы из двоичного файла.
g++ -ggdb -o target obj1.o obj2.o ...
strip target --only-keep-debug -o target.dbg
strip target
Затем в gdb используйте symbol-file target.dbg
EDIT: по актуальному вопросу:
Недостатки:
- Легкая обратная инженерия (если это вас беспокоит)
- Большие двоичные файлы
Скорость выполнения не влияет - символы отладки просто добавляются в двоичный файл в отдельном разделе, они могут влиять на размер вашего виртуального адресного пространства, но ничего больше.
Ответ 2
Он влияет на размер и, следовательно, на кеширование и память.
Если вы читаете информацию о параметрах компилятора, вы увидите, что в ней говорится, что иногда развертки, например, делают код SLOWER из-за увеличения кэширования разломов и вызывают больше выборки памяти.