Подтвердить что ты не робот

Есть ли недостаток в том, чтобы оставлять символы отладки в выпусках?

Я пытаюсь определить, есть ли какие-либо недостатки для создания двоичных файлов с остальными символами отладки. Для наших версий сборки мы скомпилируем с -O3 на данный момент, и если есть какие-либо сбои, то ядра находятся рядом с бесполезно.

Итак, что бы я хотел сделать, это изменить сборку, чтобы оставить ее в отладочных символах, т.е. -O3 -g, но есть сопротивление этому, поскольку ощущение состоит в том, что может быть какое-то влияние (кроме размера двоичного файла). Я знаю, что проблема с размером может быть исправлена ​​путем удаления символов, но есть ли что-нибудь еще тонкое, что мне не хватает?

4b9b3361

Ответ 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 из-за увеличения кэширования разломов и вызывают больше выборки памяти.