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

15

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

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

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

Мой вопрос,

  • Каков наилучший способ разметки символов в Linux?
  • Каков наилучший способ разметки символов в Windows?
  • 0
    Я думаю, что символы отладки могут помочь людям понять ваш алгоритм. Если они проверяют стек вызовов в различных точках исполнения вашей программы и видят описательные имена функций, то ...
  • 0
    В зависимости от того, как построено ваше приложение, разборка также может значительно уменьшить объем вашего приложения (особенно если вы используете много статических библиотек)! Вообще, зачистка - хорошая практика для всего, что вы отправляете.
Теги:
visual-c++
gcc
symbols

2 ответа

20
Лучший ответ

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

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

  • 2
    Если у вас есть личные MS pdb и вы хотите конвертировать их в публичные, вы можете проверить этот ответ как приватный для всех
13

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню