Лучший способ снять символы

На прошлой неделе я выпустил версию приложения для Linux и Windows.

И после релиза мы поняли, что символы не были удалены, и мой менеджер думает (и я не согласен), что он может позволить пользователю понять наш алгоритм.

В любом случае, теперь мне придется очищать символы и повторно выпускать приложение.

Мой вопрос,

  • Каков наилучший способ разметки символов в Linux?
  • Каков наилучший способ разметки символов в Windows?

Ответы

Ответ 1

С Visual С++ (и другими компиляторами Microsoft) в Windows символы не являются частью двоичных файлов. Вместо этого они хранятся в отдельных файлах под названием "База данных программы" (файлы .pdb). Просто не предоставляйте файлы .pdb.

С помощью инструментальной цепочки GNU вы должны использовать strip для удаления символов из двоичных файлов.

Ответ 2

Для инструментальной цепочки GNU существует крутая ловкость руки:

objcopy --only-keep-debug yourprogram ../somepath/yourprogram.dbg
strip yourprogram
objcopy --add-gnu-debuglink=../somepath/yourprogram.dbg

Теперь вы можете застегнуть папку, в которой находится ваша программа (или упаковать ее в установщик или что-то еще), в нем больше не будет символов отладки.
НО:. Если вы запустите отладчик или запустите инструмент, например addr2line или obdump, инструмент (благодаря информации debuglink) автоматически узнает, где найти символы и загрузить их.

Это потрясающе, потому что это означает, что у вас есть преимущества наличия символов на вашем конце, не распространяя их на пользователя.