Лучший способ снять символы - PullRequest
18 голосов
/ 22 апреля 2011

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

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

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

Мой вопрос,

  1. Каков наилучший способ удаления символов в Linux?
  2. Каков наилучший способ удаления символов в Windows?

Ответы [ 2 ]

23 голосов
/ 22 апреля 2011

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

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

18 голосов
/ 22 апреля 2011

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

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

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

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

...