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

Visual С++ 2008 "Релиз" содержит информацию об отладке

Я заметил, что при создании нового проекта на С++ с использованием MS Visual Studio 2008 сборка Release содержит отладочные символы - в частности, включены следующие настройки:

  • Формат файла С++/General/Debug установлен в База данных программ.
  • Настройки Linker/Debugging/Generating Debug Info установлены на Да.

Я никогда не замечал этого в более ранних версиях Visual Studio.

Итак, кроме создания большего EXE файла, есть ли недостаток, чтобы оставить эти настройки включенными?

4b9b3361

Ответ 1

Мы включили эти настройки в наши коммерческие выпуски уже много лет, без видимых недостатков. Но все же огромные возможности.

Мы интегрировали пакет аварийного дампа, который упаковывает дамп вместе с другой информацией и отправляет его по электронной почте (с согласия пользователя) в почтовый ящик компании. Это помогло нам найти проблемы, которые заставили бы нас навсегда воспроизвести и найти обратное.

Хотя это немного не соответствует теме, здесь ссылка на отличный вклад, сделанный кем-то, который дает вам простой способ включить репортера сбоев в приложение С++/Windows: http://www.codeproject.com/KB/debug/crash_report.aspx

Примечание. Было бы разумно, однако, не включать PDB файл в вашу версию. Тем не менее, вы должны сохранить файл PDB, соответствующий вашей выпущенной версии, чтобы вы могли правильно отладить проблему в будущем. Если используется PDB файл, который не был построен с тем же кодом, который создал exe, стек, который вы видите при попытке отладки dmp, будет неправильным.

Ответ 2

Они включены по умолчанию, потому что:

  • Если вы не создадите их сейчас, вы не сможете их создать позже.
  • Вам нужны они.

Включение информации об отладке в Visual С++ приводит к тому, что в двоичный заголовок добавляется небольшая запись, идентифицирующая PDB для этого двоичного файла. Он слишком мал, чтобы быть любого размера, и не содержит никаких полезных секретов, которые могут вас беспокоить.

(Запись заголовка помечена как RSDS: кто может догадаться, почему?)

Конечно, эти PDB будут использовать больше дискового пространства на вашей машине сборки/в ваших резервных копиях. Смирись с этим. Вам нужны эти PDB, когда приходит время отлаживать что-то.

Ответ 3

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

Лично я считаю, что иногда полезно иметь отладочную информацию, доступную для версии выпуска - таким образом гораздо легче проанализировать crashdump, который будет храниться доктором Ватсоном в случае сбоя приложения.
Я действительно нашел некоторые непонятные ошибки таким образом.

Ответ 4

Наличие этих опций не обязательно сделает ваши исполняемые файлы более крупными. Отладочная информация хранится в отдельном файле с расширением PDB. Имея доступную отладочную информацию, вы никогда не будете плохой идеей, если только вы на самом деле не занимаете достаточно свободного места на диске.

Возможно, поэтому они включены по умолчанию: они не вредят вашим исполняемым файлам. В сборках релизов используются оптимизации, такие как функция встраивания и генерации оптимизированного кода, что затрудняет переход, в то время как сборки Debug отключены.

Здесь нет недостатков.

Dave

Ответ 5

Добавить переключатель /Zi делает дополнительный файл .exe в дополнение к PDB. Однако вы можете отдельно привязать /OPT: REF, чтобы поддерживать минимальный размер файла .exe.

Ответ 6

.exe будет немного больше из-за ссылки на файл .pdb(т.е. дополнительный путь). Что об этом.