Visual C ++ 2008 'Release' build содержит отладочную информацию - PullRequest
17 голосов
/ 20 октября 2008

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

  • Формат C ++ / General / Debug Information установлен на База данных программ .
  • Для параметра Linker / Debugging / Generate Debug Info установлено значение Да .

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

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

Ответы [ 6 ]

32 голосов
/ 20 октября 2008

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

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

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

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

4 голосов
/ 26 октября 2008

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

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

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

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

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

2 голосов
/ 20 октября 2008

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

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

Здесь нет минусов.

Dave

2 голосов
/ 20 октября 2008

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

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

1 голос
/ 26 октября 2008

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

0 голосов
/ 21 октября 2008

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...