1. Главная страница » Компьютеры

Debug и release visual studio

Автор: | 16.12.2019

Проекты Visual Studio имеют отдельные конфигурации выпуска и отладки для вашей программы. Visual Studio projects have separate release and debug configurations for your program. Вы создаете отладочную версию для отладки и версию выпуска для окончательного распространения выпуска. You build the debug version for debugging and the release version for the final release distribution.

В конфигурации отладки программа компилируется с полной символьной отладочной информацией и без оптимизации. In debug configuration, your program compiles with full symbolic debug information and no optimization. Оптимизация усложняет отладку, поскольку усложняется связь между исходным кодом и сгенерированными инструкциями. Optimization complicates debugging, because the relationship between source code and generated instructions is more complex.

Конфигурация выпуска программы не имеет символьной отладочной информации и полностью оптимизирована. The release configuration of your program has no symbolic debug information and is fully optimized. Для управляемого кода C++ и кода отладочная информация может быть создана в PDB-файлах в зависимости от используемых параметров компилятора . For managed code and C++ code, debug information can be generated in .pdb files, depending on the compiler options that are used. Создание PDB-файлов может оказаться полезным, если в дальнейшем потребуется Отладка окончательной версии. Creating .pdb files can be useful if you later have to debug your release version.

Дополнительные сведения о конфигурациях сборки см. в статье Общие сведения о конфигурациях сборки. For more information about build configurations, see Understand build configurations.

Конфигурацию сборки можно изменить в меню Сборка на панели инструментов или на страницах свойств проекта. You can change the build configuration from the Build menu, from the toolbar, or in the project’s property pages. Страницы свойств проекта зависят от конкретного языка. Project property pages are language-specific. Следующая процедура показывает, как изменить конфигурацию сборки из меню и на панели инструментов. The procedure below shows how to change the build configuration from the menu and the toolbar. Дополнительные сведения о том, как изменить конфигурацию сборки в проектах на разных языках, см. в разделе см. также ниже. For more information about how to change the build configuration in projects in different languages, see the See also section below.

Читайте также:  Men of war assault squad 2 редактор

Содержание

Изменение конфигурации сборки Change the build configuration

Чтобы изменить конфигурацию сборки, выполните одно из следующих действий. To change the build configuration, either:

  • В меню Сборка выберите Configuration Manager, а затем выберите Отладка или выпуск. From the Build menu, select Configuration Manager, then select Debug or Release.

или диспетчер конфигурации служб or

На панели инструментов выберите либо Отладка, либо Выпуск из списка Конфигурации решения. On the toolbar, choose either Debug or Release from the Solution Configurations list.

Создание файлов символов (. pdb) для сборки (C#, C++, Visual Basic,) F# Generate symbol (.pdb) files for a build (C#, C++, Visual Basic, F#)

Можно выбрать создание файлов символов (. pdb) и включаемых отладочных данных. You can choose to generate symbol (.pdb) files and what debug information to include. Для большинства типов проектов компилятор создает файлы символов по умолчанию для отладочных и окончательных сборок, в то время как другие параметры по умолчанию отличаются по типу проекта и версии Visual Studio. For most project types, the compiler generates symbol files by default for debug and release builds, while other default settings differ by project type and Visual Studio version.

Отладчик загружает PDB-файл для исполняемого файла, только если он точно соответствует PDB-файлу, который был создан при сборке исполняемого файла (то есть это должен быть либо оригинальный PDB-файл, либо его копия). The debugger will load only a .pdb file for an executable file that exactly matches the .pdb file that was created when the executable was built (that is, the .pdb must be the original or a copy of the original .pdb file). Дополнительные сведения см. в статье почему Visual Studio требует, чтобы файлы символов отладчика точно совпадали с двоичными файлами, с которыми они были созданы?. For more information, see Why does Visual Studio require debugger symbol files to exactly match the binary files that they were built with?.

Каждый тип проекта может иметь другой способ установки этих параметров. Each project type may have a different way of setting these options.

Создание файлов символов для проекта C#, ASP.NET или Visual Basic Generate symbol files for a C#, ASP.NET, or Visual Basic project

Подробные сведения о параметрах проекта для конфигураций отладки C# в или Visual Basic см. в разделе Параметры C# проекта для конфигурации отладки или Параметры проекта для конфигурации отладки Visual Basic. For detailed information on project settings for debug configurations in C# or Visual Basic, see Project settings for a C# debug configuration or Project settings for a Visual Basic debug configuration.

Выберите проект в Обозревателе решений. In Solution Explorer, select the project.

Выберите значок Свойства (или нажмите клавиши ALT + ВВОД). Select the Properties icon (or press Alt+Enter).

В боковой области выберите Сборка (или Скомпилируйте в Visual Basic). In the side pane, choose Build (or Compile in Visual Basic).

В списке Конфигурация выберите Отладка или выпуск. In the Configuration list, choose Debug or Release.

Нажмите кнопку Дополнительно (или кнопку Дополнительные параметры компиляции в Visual Basic). Select the Advanced button (or the Advanced Compile Options button in Visual Basic).

В списке отладочной информации (или в списке создать отладочную информацию в Visual Basic) выберите полная, только PDBили Переносимая. In the Debugging information list (or the Generate debug info list in Visual Basic), choose Full, Pdb-only, or Portable.

Переносимый формат — это самый последний кросс-платформенный формат для .NET Core. The portable format is the most recent cross-platform format for .NET Core. Дополнительные сведения о параметрах см. в разделе диалоговое окно "C#дополнительные параметры сборки" (). For more information on options, see Advanced Build Settings dialog box (C#).

Построить проект. Build your project.

Компилятор создает файлы символов в той же папке, что и исполняемый файл, или основной выходного файла. The compiler creates the symbol file(s) in the same folder as the executable or the main output file.

Создание файлов символов для C++ проекта Generate symbol files for a C++ project

Выберите проект в Обозревателе решений. In Solution Explorer, select the project.

Выберите значок Свойства (или нажмите клавиши ALT + ВВОД). Select the Properties icon (or press Alt+Enter).

В списке Конфигурация выберите Отладка или выпуск. In the Configuration list, choose Debug or Release.

В боковой области выберите компоновщик > Отладка, а затем выберите параметры для создания отладочной информации. In the side pane, choose Linker > Debugging, then select options for Generate Debug Info.

Подробные сведения о параметрах проекта для конфигураций отладки C++в см. в разделе Параметры C++ проекта для конфигурации отладки. For detailed information on project settings for debug configurations in C++, see Project settings for a C++ debug configuration.

Настройка параметров для создания файлов базы данных программы. Configure options for Generate Program Database Files.

В большинстве C++ проектов значением по умолчанию является $(OutDir)$(TargetName).pdb , которое создает PDB-файлы в выходной папке. In most C++ projects, the default value is $(OutDir)$(TargetName).pdb , which generates .pdb files in the output folder.

Построить проект. Build your project.

Компилятор создает файлы символов в той же папке, что и исполняемый файл, или основной выходного файла. The compiler creates the symbol file(s) in the same folder as the executable or the main output file.

В чем разница между Debug и Release в Visual Studio?

Самое главное, что в режиме отладки нет оптимизаций, в то время как в режиме выпуска есть оптимизации. Это важно, потому что компилятор очень продвинутый и может сделать довольно сложное низкоуровневое улучшение вашего кода. В результате некоторые строки вашего кода могут остаться без каких-либо инструкций, или некоторые из них могут быть замешаны. Поэтапная отладка была бы невозможна. Кроме того, локальные переменные часто оптимизируются загадочно, поэтому часы и QuickWatches часто не работают, потому что переменная "оптимизирована". И есть множество других оптимизаций. Попробуйте отлаживать оптимизированный код .NET когда-нибудь, и вы увидите.

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

"Debug" и "Release" на самом деле всего две метки для целого множества настроек, которые могут повлиять на вашу сборку и отладку.

В режиме "Отладка" у вас обычно есть следующее:

  • Файлы отладки программы Debug Database, которые позволяют вам внимательно следить за выполнением программы в источнике во время выполнения.
  • Все оптимизации отключены, что позволяет вам проверять значение переменных и трассировки на функции, которые в противном случае могли бы быть оптимизированы или встроены
  • Определение препроцессора _DEBUG, которое позволяет вам писать код, который действует по-разному в режиме отладки по сравнению с версией, например, с инструментами ASSERT, которые должны использоваться только при отладке
  • Связывание с библиотеками, которые также были скомпилированы с параметрами отладки, которые обычно не используются для фактических клиентов (по причинам размера и безопасности).

В режиме "Release" оптимизация включена (хотя есть несколько доступных опций), и определение препроцессора _DEBUG не определено. Обычно вы все равно хотите сгенерировать файлы PDB, потому что очень полезно иметь возможность "отлаживать" в режиме выпуска, когда все работает быстрее.

Если вы просмотрите параметры компиляции проекта и сравните их, вы увидите, какие отличия.

Предполагая, что вопрос касается кода native/С++ (это не совсем понятно из фразы):

В принципе, в Debug все оптимизации генерации кода отключены. Некоторые библиотеки (например, STL) по умолчанию используют более строгую проверку ошибок (например, итераторы отладки). Создается дополнительная информация об отладке (например, для "Редактирование и продолжение" ). В коде генерируются больше вещей, чтобы ловить ошибки (значения локальной переменной установлены на неинициализированный шаблон, используется отладочная куча).

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

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

Также обратите внимание, что при использовании MFC, например, проекты отладки ссылаются на нераспространяемые DLL-версии, такие как MFC90D.DLL , а релиз строит ссылку на распространяемые версии, такие как MFC90.DLL . Вероятно, это похоже на другие структуры.

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

Также, по-видимому, режим Debug создает много дополнительных потоков, чтобы помочь в отладке. Они остаются активными на протяжении всей жизни процесса, независимо от того, прикрепляете ли вы отладчик или нет. См. Мой родственный вопрос здесь.

Очевидное различие, которое вы видите, это размер двоичного файла. Сборка Debug создает большую двоичную версию, чем сборка Release.

При компиляции в Debug таблица символов добавляется в скомпилированный объект файла кода, который позволяет программам отладки использовать эти двоичные файлы и осваивает значения объектов и переменных.

Другая наблюдаемая разница заключается в том, что в режиме Release двоичный код просто сбой при фатальной ошибке в режиме Debug, если вы начнете отладку приложения в Visual Studio, вы можете проверить стек вызовов, который сообщает вам точное местоположение ошибочное утверждение.

Мне тоже стало интересно, когда я разработал приложение, скопированное из существующей конфигурации сборки релиза. У меня есть разработчик, которому интересно использовать это приложение в режиме отладки, поэтому я задался вопросом, что потребуется, чтобы сделать эту конфигурацию сборки, которая существует с именем ReleaseMyBuild, скопированной из конфигурации Release (и, следовательно, должна иметь все настройки, предназначенные для выпуска оптимизаций), чтобы внезапно изменить команды и стать сборкой отладки, несмотря на запутанное имя конфигурации сборки. Я полагал, что конфигурация проекта — это просто имя и удобный способ выбора "целого множества настроек", о котором говорит Йорис Тиммерманс. Я хотел знать, насколько важны эти настройки, которые делают конфигурацию сборки с именем "FOO" как оптимизированную версию сборки.

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

RELEASE

DEBUG

Интересно, что в разделе Link они имеют GenerateDebugInformation значение true.

Я не знаю, каковы точные различия, потому что на самом деле нет информации, доступной на этом.

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

К сожалению, вы должны поместить сборку отладки в производство. И да, для публикации вам нужно использовать старый добрый FTP.

Посмотрите другие вопросы по меткам .net visual-studio или Задайте вопрос

Обновл. 21 Фев 2019 |

Конфигурация сборки (англ. «build configuration») – это набор настроек проекта, которые определяют принцип его построения. Конфигурация сборки состоит из: имени исполняемого файла, директории исполняемого файла, в каких директориях IDE будет искать код и заголовочные файлы, информации об отладке и параметров оптимизации вашего проекта.

Интегрированная среда разработки имеет две конфигурации сборки: «Release» (Релиз) и «Debug» (Отладка).

Конфигурация «Debug» предназначена для отладки вашей программы. Эта конфигурация отключает все настройки по оптимизации, включает информацию об отладке, что делает ваши программы больше и медленнее, но упрощает проведение отладки. Режим «Debug» обычно используется в качестве конфигурации по умолчанию.

Конфигурация «Release» используется для сборки программы для её дальнейшего выпуска. Программа оптимизируется по размеру и производительности и не содержит дополнительную информацию об отладке.

Например, исполняемый файл программы «Hello, World!» из предыдущего урока, созданный в конфигурации «Debug», у меня занимал 65 KB, в то время как исполняемый файл, построенный в конфигурации «Release», занимал всего лишь 12 KB.

Переключение между режимами «Debug» и «Release» в Visual Studio

Самый простой способ изменить конфигурацию проекта – выбрать соответствующую из выпадающего списка на панели быстрого доступа:

Переключение между режимами «Debug» и «Release» в Code::Blocks

В Code::Blocks на панели быстрого доступа есть также выпадающий список, где вы можете выбрать соответствующий режим конфигурации:

Заключение

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

За репост +20 к карме и моя благодарность!

Урок №5. Компиляция вашей первой программы

Комментариев: 9

Не понятно , зачем нужны два exe файла , полученные в режиме debug и relese?. Есть же файл проекта, в котором можно производить отладку программы. А как запустить exe файл debug для отладки? Этот момент не понятно описан.

Александр, вам два файла не нужно. Каждый из них — результат компиляции и сборки исполняемого файла программы в первом случае в конфигурации Debug, а во втором — Release. Вы можете удалить их, при следующей сборки нужной конфигурации исполняемый файл сгенерируется еще раз.
>А как запустить exe файл debug для отладки?
Можно "натравить" отладчик из IDE на исполняемый процесс, те запущенную вами программу. Едва ли это для начинающих, но подробности можно прочитать, например, здесь https://stackoverflow.com/questions/15097610/debugging-an-executable-in-visual-studio

Юрий! Спасибо за грамотное, доступное изложение !
Такое я и искал!

А у меня на dev C++ стоит Release мне оставить это или нет?

То есть, использовать конфигурацию Debug при разработке программ чтобы искать ошибки, а release когда уже уверен что всё в порядке и можно выпускать?

В скачанном компиляторе CodeBlocks с самого начала используется Relese(на Debug переключаться не хочет), в дальнейших уроках будут возникать ошибки?

У вас последняя версия CodeBlocks? Пробовали переустанавливать?

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

Поддерживаю . Как активировать строки в Меню Debug Code::Bloks 17.12?

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *