Что такое отладочная сборка
Отладкой можно называть процесс поиска логических ошибок в программе. Как известно ошибки бывают двух типов.
Синтаксические Логические
Синтаксические ошибки выявляются при сборке проекта и отображаются в окне Build.
Намного труднее выявить логические ошибки, которые обычно проявляются в ходе выполнения программы. Программа работает, но ведет себя как-то странно, допустим выдает неправильный результат. Тут-то и возникает ряд специфических задач, например остановить выполнение программы и посмотреть содержание переменных, пройтись по программе в пошаговом режиме и так далее. При разговоре об отладке нужно четко понимать, что есть две версии собранного проекта. Отладочная версия (debug) и конечная версия (release). Отладочная версия характеризуется большим размером, который может в десятки раз превышать размер конечной версии. Это связано с тем, что в собранный проект помещается вся необходимая информация для отладчика (таблицы символов и так далее). Кроме того, при сборке отладочного проекта отключена любая оптимизация, именно с этим связаны многие проблемы получения конечной версии, когда отладочная работает, а конечная нет. Тут от части виновата оптимизация. Именно использование отладочной версии сборки позволяет Вам получить максимальные возможности. В любой момент есть возможность переключиться на отладочную версию или конечную. За этот процесс отвечает пункт меню Set Active Configuration.
По выбору которого появляется диалоговое окно выбора сборки.
Здесь можно выбрать необходимую конфигурацию и нажать на ОK. По умолчанию проект создается в отладочной версии. После сборки проекта в папке проекта появляется соответствующая папка с результатами сборки, в которой и будет лежать готовый EXE файл. Имена соответствуют именам конфигурации.
Итак, мы с Вами будем рассматривать отладку, как процесс поиска логических ошибок. Для полного использования данной возможности необходимо использовать отладочную версию сборки проекта.
что означает сборка отладки и выпуск сборки, разница и использование
Я хочу знать, что означают эти два значения: сборка отладки и сборка выпусков и какая разница между ними. Какой из них мне следует использовать (я имею в виду, какие условия подходят для каждого) и какой сборки я использую сейчас, если я создаю простой проект на C++ в Visual Studio. [Если я не изменяю настройки каких-либо проектов] Я спрашиваю об этом, потому что я пытаюсь создать графический интерфейс с использованием wxWidgets 2.9.4 и они дают разные случаи добавления необходимой.lib. Это release ANSI static debug ANSI static release Unicode static debug Unicode static Пожалуйста, дайте подробный ответ. c++ debugging build release wxwidgets
Поделиться Источник 09 августа 2012 в 12:05
4 ответа
- release против debug: релизная версия будет скомпилирована с набором более или менее стандартных опций оптимизации (и без итераторной отладки); версия отладки без оптимизации и с отладкой итератора. Независимо от того, присутствует ли отладка итератора или нет, это одно, что обычно нарушает двоичную совместимость. Поставщик библиотек должен документировать, какие опции совместимы с каждой версией.
- ANSI против Unicode: это, вероятно, означает узкий char против wchar_t для персонажных данных. Используйте тот, который соответствует тому, что вы используете в своем приложении. (Обратите внимание, что разница между этими двумя является гораздо больше, чем просто переключение некоторых компиляторов.Вам часто нужен радикально другой код, и правильное обращение с Unicode во всех случаях далеко не простое; приложение, которое действительно поддерживает Unicode, должно быть осведомлено о таких вещах, как составление символов или двунаправленное написание.)
- статический против динамического: это определяет, как библиотека связана и загружена. Обычно вам нужен статический, по крайней мере, если вы рассчитываете на развертывание вашего приложения на других машинах, чем на той, на которой вы его разрабатываете. Но это также зависит от проблем с лицензированием: если вам нужна лицензия для каждой машины, на которой развернута библиотека, может быть более разумно использовать динамический.
Поделиться 09 августа 2012 в 12:30
При выполнении сборки DEBUG проект настроен на то, чтобы не оптимизировать (или только очень слегка оптимизировать) сгенерированный код и указать компилятору добавить отладочную информацию (которая включает информацию о функциях, переменных и другую информацию, необходимую для отладки). Препроцессор настроен на определение макроса _DEBUG .
С другой стороны, сборка RELEASE имеет более высокий уровень оптимизации, и информация о отладке не сохраняется. Препроцессор настроен на определение макроса NDEBUG .
Еще одно отличие заключается в том, что определенные «системные» макросы, например, макросы, подобные ASSERT , делают разные вещи в зависимости от того, определен ли _DEBUG или NDEBUG . ASSERT ничего не делает в релизной сборке, но проверяет и прерывает в отладочных сборках.
Разница между Unicode и не- Unicode в основном заключается в препроцессорном макросе UNICODE , который сообщает заголовочным файлам, должны ли быть включены определенные функциональные возможности Unicode или нет. Одно из них заключается в том, что TCHAR будет определен как wchar_t в сборках Unicode, но как char в сборках, не связанных с Unicode.
Поделиться 09 августа 2012 в 12:31
Если вы хотите связать статическую библиотеку с проектом, она должна быть скомпилирована с теми же настройками, которые вы используете для компиляции вашего кода. Поэтому есть версия библиотеки Debug & Release. Кроме того, вам нужно указать, хотите ли вы использовать unicode или ansi. Здесь ответ довольно простой (на мой взгляд) — просто используйте unicode.
Чем отличается Release от Debug, чтобы они не могли смешиваться? В основном это управление памятью. Управление памятью в Debug делает много дополнительных вещей, чтобы вы могли обнаружить ошибки раньше. Например, есть канарные коды, которые можно проверить на перезапись кода. Неинициализированная память инициализируется с помощью определенного шаблона. Кроме того, в релизе есть много оптимизаций, которые не используются в отладке. Это позволяет релизу запускаться быстрее, но затрудняет отладку кода. Методы могут быть оптимизированы и вместо этого встроены, передача параметров может быть оптимизирована для использования регистров.
Таким образом, в C++ вы управляете (по крайней мере) 2 конфигурациями. Одна конфигурация Debug, которую вы связываете с библиотекой отладки. Эта для разработки и тестирования. И конфигурация Release, связанная с библиотекой релизов. Эта для доставки. Но не забывайте, что вам нужно протестировать Release, так как она может вести себя иначе, чем конфигурация Debug.
Поделиться 09 августа 2012 в 12:29
В сборке отладки вы получаете гораздо больше ошибок при проверке, поэтому если что-то пойдет не так, вы можете получить более информативное сообщение (и оно будет работать медленнее)
В сборке отладки вы получите больше информации при запуске под отладчиком.
Вы можете определить, является ли сборка сборкой отладки, посмотрев определения препроцессора свойств проекта: _DEBUG будет определен.
Вы отправите сборку выпуска на свои клиенты. (Сборка отладки использует библиотеки отладки, которые не присутствуют на большинстве неразработанных машин)
Что такое отладка?
Отладчик Visual Studio — очень эффективное средство. Прежде чем приступать к его использованию, следует ознакомиться с базовыми терминами, такими как отладчик, отладка и режим отладки. Когда позднее мы будем вести речь о поиске и устранении ошибок, мы будем иметь в виду то же самое.
Отладчик и отладка
Термин отладка может иметь разные значения, но в первую очередь он означает устранение ошибок в коде. Делается это по-разному. Например, отладка может выполняться путем проверки кода на наличие опечаток или с помощью анализатора кода. Код можно отлаживать с помощью профилировщика производительности. Кроме того, отладка может производиться посредством отладчика.
Отладчик — это узкоспециализированное средство разработки, которое присоединяется к работающему приложению и позволяет проверять код. В документации по отладке для Visual Studio именно это обычно подразумевается под отладкой.
Режим отладки и выполнение приложения

При первом запуске приложения в Visual Studio его можно запустить, нажав зеленую кнопку со стрелкой на панели инструментов (или F5). По умолчанию в раскрывающемся списке слева отображается элемент Отладка. Если вы не имеете опыта работы с Visual Studio, может показаться, что отладка приложения — это практически то же самое, что его запуск. На самом деле эти задачи хоть и связаны, но коренным образом различаются.

Значение Отладка соответствует конфигурации отладки. Когда вы запускаете приложение (нажимая зеленую стрелку или клавишу F5) в конфигурации отладки, оно запускается в режиме отладки. Это означает, что приложение запускается с присоединенным отладчиком. В результате вы получаете полный набор функций отладки, которые можно использовать для поиска ошибок в приложении.
Если у вас открыт проект, выберите в раскрывающемся списке Отладка элемент Выпуск.

При выборе этого параметра конфигурация отладки для проекта меняется на конфигурацию выпуска. Проекты Visual Studio имеют отдельные конфигурации выпуска и отладки для вашей программы. Производится построение отладочной версии для отладки и версии выпуска для окончательного выпуска программы. Сборка выпуска оптимизирована для обеспечения максимальной производительности, а отладочная сборка лучше подходит для отладки.
Когда следует использовать отладчик
Отладчик — важнейший инструмент для поиска и устранения ошибок в приложениях. Однако большое значение имеет контекст. Важно использовать все средства, имеющиеся в вашем распоряжении, чтобы быстро устранять ошибки. Зачастую лучшим «средством» являются правильные методики написания кода. Зная, когда лучше использовать отладчик, а когда — другие средства, вы также сможете более эффективно использовать отладчик.
Связанный контент
Из этой статьи вы узнали общие принципы отладки приложений. Теперь вы можете приступить к знакомству с процессом отладки в Visual Studio и написанию кода с меньшим количеством ошибок. В следующих статьях приводятся примеры кода на C#, но основные понятия применимы ко всем языкам, поддерживаемым средой Visual Studio.
Установленная сборка Windows
Проверенные сборки были доступны в более ранних версиях Windows до Windows 10 версии 1803. Используйте такие средства, как Средство проверки драйверов и GFlags, для проверка кода драйвера в более поздних версиях Windows.
В этом разделе описывается, чем проверенная сборка Microsoft Windows (также известная как отладочная сборка) операционных систем Windows отличается от бесплатной ( также известной как розничная сборка) этой операционной системы. В этом разделе описывается, как уникальные возможности проверенной сборки могут помочь в разработке и отладке драйверов на платформах x86 и x64. В разделе также перечислены несколько методов установки и использования проверенной сборки в разных средах разработки и отладки драйверов.
В этом разделе
- Различия в проверенных и бесплатных сборках
- Использование проверенной сборки Windows
- Установка проверенной сборки Windows
- Проверенные точки останова и сообщения сборки
- Проверенные ASSERT сборки
Совместная работа с нами на GitHub
Источник этого содержимого можно найти на GitHub, где также можно создавать и просматривать проблемы и запросы на вытягивание. Дополнительные сведения см. в нашем руководстве для участников.
Windows driver documentation