Поделиться через


Как отладить релизную сборку

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

Лучший интерфейс доступен начиная с Visual Studio 2022 версии 17.14, который позволяет отлаживать оптимизированный код, как если бы он был скомпилирован неоптимизирован, сохраняя скорость оптимизированного кода. Дополнительные сведения см. в динамической отладке C++ (предварительная версия).

Отладка релизной сборки

  1. Откройте диалоговое окно Страницы свойств проекта. Подробнее см. в статье Настройка компилятора C++ и свойства сборки в Visual Studio.

  2. Щелкните узел C/C++. Задайте для параметра Формат отладочной информации значение C7 совместимо (/Z7) или База данных программы (/Zi).

  3. Разверните Компоновщик и щелкните на узле Общие. Задайте для параметра Включить инкрементную компоновку значение Нет (/INCREMENTAL:NO).

  4. В разделе Компоновщиквыберите узел Отладка. Задайте для параметра Создавать отладочную информацию значение Да (/DEBUG).

  5. В разделе Компоновщиквыберите узел оптимизации. Установите для ссылок значение "Нет" (/OPT:NOREF) и включите сворачивание COMDAT на "Нет" (/OPT:NOICF).

  6. Теперь можно провести отладку вашего приложения релизной сборки. Чтобы найти проблему, пошагово выполните код (или воспользуйтесь JIT-отладкой) до тех пор, пока не обнаружится место возникновения сбоя, а затем определите неверные параметры или код.

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

    Используйте /RTC, чтобы попытаться выявить такие ошибки в ваших сборках отладки.

    Дополнительные сведения см. в статье Оптимизация кода.

См. также

Устранение проблем релизной сборки