89

Можно создать дубликат:
Debug vs. release in .NET
Debug/Release difference В чем разница между режимами Release и Debug в Visual Studio?

Что разница между режимами выпуска и отладки в Visual Studio при построении проекта?

+0

Этот [родственный вопрос] (http://stackoverflow.com/questions/90871/debug-vs-release-in-net) содержит много полезной информации. – dommer

ответ

69

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

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

16

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

+9

Вы также можете выполнить код в режиме деблокирования. –

+0

pdb файлы также генерируются в режиме деблокирования –

+0

-1: Это неправильно: файлы pdb также должны быть сгенерированы для сборки релиза, так как очень полезно отлаживать удаленно сбойное приложение и на самом деле не добавлять большие затраты на производительность. Фактически это значение по умолчанию в VS – ceztko

92

Debug и Release только этикетки для различных конфигураций решений. Вы можете добавить других, если хотите. Проект, который я когда-то работал, назывался «Debug Internal», который использовался для включения внутренних функций редактирования приложения. Вы можете увидеть это, если вы перейдете на Configuration Manager... (он находится в меню Build). Дополнительную информацию о библиотеке MSDN можно найти в разделе Configuration Manager Dialog Box.

Каждой конфигурация раствора затем состоит из кучи конфигураций проекта. Опять же, это только ярлыки, на этот раз для набора настроек для вашего проекта. Например, наши проекты на C++-библиотеке имеют конфигурации проектов, называемые «Debug», «Debug_Unicode», «Debug_MT» и т. Д.

Доступные настройки зависят от того, какой тип проекта вы строите. Для .NET-проекта это довольно небольшой набор: #define и еще несколько вещей. Для проекта C++ вы получаете гораздо больше возможностей для настройки.

В общем, вы будете использовать «Debug», когда вы хотите, чтобы ваш проект был построен с выключенным оптимизатором, и когда вы хотите получить полную информацию об отладке/символе, включенную в вашу сборку (в файле .PDB, как правило). Вы будете использовать «Release», если вы хотите включить оптимизатор, а когда вы не хотите хотите включить полную отладочную информацию.

+0

. ** Конфигурации проекта ** можно редактировать, щелкнув правой кнопкой мыши по проекту в SolutionExplorer и выбрав «Свойства» из контекстного меню. Чтобы отредактировать параметры отладки для конфигурации проекта «Отпустить», выберите вкладку «Отладка» с левой стороны и выберите «Отпустить» в поле со списком «Конфигурация». => Использование метки «Отладка» для конфигурации решения или конфигурации проекта может вводить в заблуждение, поскольку конфигурация «Release» также может быть отлажена. – Stefan

+0

Также см. Следующий вопрос о том, как включить/отключить оптимизацию компиляции. https://stackoverflow.com/questions/1199204/how-can-i-disable-compiler-optimization-in-c (В VB.NET его можно найти на вкладке Compile => Advanced Compile Options ...) – Stefan

+0

Если вы хотите отключить создание отладочной информации для режима выпуска, вы можете сделать это, установив для параметра «Генерировать информацию об отладке» значение «Нет». Тем не менее отладчик будет подключен при запуске приложения. Чтобы даже избежать этого ... вам нужно использовать «Начать без отладки» (Strg + F5). – Stefan

Смежные вопросы