Размер исполняемого файла должен увеличиться гораздо меньше, чем на 25%.
На самом деле я немного удивлен, что он вообще сильно увеличивается, но некоторые быстрые тесты показывают, что по крайней мере один большой пример проекта (ScummVM) увеличивает .exe с 10 205 184 байт до 10 996 224 байт, просто добавив /DEBUG
опция для шага ссылки (увеличение примерно на 8%)./DEBUG
указывается с помощью опции "Linker | Debugging | Generate Debug Info"
в IDE.Обратите внимание, что эти настройки должны не влиять на оптимизацию, генерируемую компилятором.
Я знаю, что указатель на файл .pdb помещен в исполняемый файл, но это не так уж и много.,Я немного поэкспериментировал и обнаружил, что включение опции компоновщика /OPT:REF
изменило разницу в размере до 10 205 184 против 10 205 696.Таким образом, сборка не /DEBUG
осталась прежнего размера, но сборка /DEBUG
уменьшилась только до 512 байт (что может быть учтено указателем на .pdb - возможно, компоновщик округляет до некоторого кратного 512 или чего-то еще)).Намного менее чем на 1% больше.Очевидно, добавление /DEBUG
заставляет компоновщик сохранять объекты без ссылок, если вы не укажете также /OPT:REF
.(Опция "Linker | Optimization | References"
в IDE).
Программа будет работать нормально без файла .pdb - вы можете отправить его клиентам, если вы хотите улучшить отладку на сайте клиента.Если вы просто хотите получить приличную трассировку стека, вам не нужно иметь файл .pdb на клиентском компьютере - они (или некоторые предоставляемые вами инструменты / функции) могут отправить файл дампа, который можно загрузить вотладчик на вашем сайте с доступным файлом .pdb и получите ту же самую информацию о трассировке стека.
Конечно, нужно помнить, что вам нужно будет архивировать файлы .pdb вместе с вашим файлом.релизы.Пакет «Средства отладки для Windows» (который теперь распространяется в Windows SDK) предоставляет инструмент сервера символов, позволяющий архивировать файлы .pdbs и легко извлекать их для отладки.
Единственный недостаток, о котором я могу подуматьРаспространение файлов .pdb заключается в том, что это может упростить реверс-инжиниринг вашего приложения, если вас это беспокоит.Обратите внимание, что Microsoft распространяет символы для Windows (используя общедоступный сервер символов - а также пакеты полных наборов символов для некоторых конкретных выпусков).Однако символы, которые они распространяют, проходят этап очистки, который удаляет определенные элементы, которые они считают чувствительными.Вы можете сделать то же самое (или подобное), используя опцию компоновщика /PDBSTRIPPED
("Linker | Debugging | Strip Private Symbols"
в IDE).См. документы MSDN для получения подробных сведений об удалении этого параметра.Если вы собираетесь распространять символы, возможно, уместно использовать эту опцию.