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


Поддерживаемые изменения и ограничения кода (C++)

В Visual C+ большинство типов изменений, вносимых в код, обрабатывается в режиме «Изменить и продолжить». Некоторые изменения, однако, не могут быть применены во время выполнения программы. Чтобы применить эти изменения, необходимо остановить выполнение и собрать обновленную версию кода.

В разделе Режим "Изменить и продолжить" (Visual C++) приведены сведения о работе в режиме «Изменить и продолжить» для C++ в Visual Studio.

Содержание этой статьи

Неподдерживаемые изменения

Неподдерживаемые сценарии

Ограничения компоновки

Ограничения предварительно откомпилированных заголовков

Ограничения атрибутов IDL

Неподдерживаемые изменения

Следующие изменения в коде C/C++ не могут быть применены во время сеанса отладки.

  • Большинство изменений в глобальных или статических данных.

  • Изменения в исполняемых файлах, которые были скопированы с другого компьютера, а не собраны локально.

  • Изменения в типах данных, которые влияют на структуру объекта, например изменения в данных-членах класса.

  • Добавление более 64 Кбайт нового кода или данных.

  • Добавление переменных, требующих конструктор в точке, предшествующей указателю инструкции.

  • Изменения, которые влияют на код, требующий инициализации во время выполнения.

  • Добавление обработчиков исключений в некоторых экземплярах.

  • Изменения в файлах ресурсов.

  • Изменения в коде файлов, доступных только для чтения.

  • Изменения в коде при отсутствии соответствующего PDB-файла.

  • Изменения в коде, для которого отсутствует объектный файл.

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

  • Операция "Изменить и продолжить" не обновляет статические библиотеки. При внесении изменения в статическую библиотеку выполнение будет продолжено со старой версией без выдачи предупреждения.

Неподдерживаемые сценарии

Операция "Изменить и продолжить" для C/C++ не доступна в следующих сценариях отладки:

  • Отладка родных приложений, скомпилированных с /Zo (Enhance Optimized Debugging)

  • отладка приложений или компонентов для Магазина Windows;

  • отладка в Windows 98;

  • отладка в смешанном режиме (машинный код/управляемый код);

  • отладка JavaScript;

  • отладка SQL;

  • отладка с использованием файла дампа;

  • изменение кода после необработанного исключения, когда не включен параметр Очищать стек вызовов от кадров необработанных исключений;

  • отладка приложения с использованием команды Присоединиться к вместо запуска приложения кнопкой Пуск в меню Отладка;

  • отладка оптимизированного кода;

  • отладка старой версии кода после того, как новую версию не удалось собрать из-за ошибок сборки.

К началуСодержание этой статьи

Ограничения компоновки

Параметры компоновщика, отключающие режим «Изменить и продолжить» | Ограничения автоматического повторного связывания

Параметры компоновщика, отключающие режим «Изменить и продолжить»

Следующие параметры компоновщика отключают режим "Изменить и продолжить".

  • Параметры /OPT:REF, /OPT:ICF и /INCREMENTAL:NO отключают режим "Изменить и продолжить" со следующим предупреждением:

    LINK : предупреждение LNK4075: игнорируется /EDITANDCONTINUE из–за /OPT

    specification

  • Параметры /ORDER, /RELEASE и /FORCE отключают режим "Изменить и продолжить" со следующим предупреждением:

    LINK : предупреждение LNK4075: игнорируется /INCREMENTAL из–за /option

    specification

  • Установка любых параметров, предотвращающих создание файла программной базы данных (.PDB), отключает режим "Изменить и продолжить" без предупреждения.

Ограничения автоматического повторного связывания

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

Функция "Изменить и продолжить" не может осуществлять перекомпоновку программы, если отладка выполняется не из расположения исходного построения. Сообщение говорит о том, что необходимо вручную заново осуществить построение.

Функция "Изменить и продолжить" не осуществляет повторное построение статических библиотек. При внесении изменений в статическую библиотеку в режиме «Изменить и продолжить» необходимо вручную повторно осуществить построение библиотеки и повторно скомпоновать использующие ее приложения.

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

Отключение перекомпоновки после выполнения "Изменить и продолжить"

  1. В меню Отладка выберите Параметры и настройки.

  2. В диалоговом окне Параметры откройте узел Отладка и выберите узел Изменить и продолжить.

  3. Снимите флажок Перекомпоновка изменений кода после отладки.

К началуСодержание этой статьи

Ограничения предварительно откомпилированных заголовков

По умолчанию в режиме "Изменить и продолжить" загружаются и обрабатываются предкомпилированные заголовки в фоновом режиме для ускорения обработки изменений кода. Загрузка предкомпилированных заголовков требует выделения физической памяти, что может быть проблемой в случае компиляции на компьютере с ограниченной RAM. Будет ли это являться проблемой, можно определить с помощью диспетчера задач Windows, выяснив объем доступной физической памяти во время отладки. Если это количество больше размера предварительно скомпилированных заголовков, то в режиме "Изменить и продолжить" не должно возникнуть проблем. Если объем свободной памяти меньше объема, необходимого для прекомпилированных заголовков, можно запретить средству "Изменить и продолжить" загружать прекомпилированные заголовки в фоновом режиме.

Чтобы отключить фоновую загрузку прекомпилированных заголовков для средства "Изменить и продолжить"

  1. В меню Отладка выберите Параметры и настройки.

  2. В диалоговом окне Параметры откройте узел Отладка и выберите узел Изменить и продолжить.

  3. Снимите флажок Разрешить прекомпиляцию.

К началуСодержание этой статьи

Ограничения атрибутов IDL

В режиме "Изменить и продолжить" не создаются повторно файлы определения интерфейса (IDL). Как следствие, изменения в атрибутах IDL не отображаются в ходе отладки. Для того чтобы увидеть изменения в атрибутах IDL, необходимо остановить процесс отладки и заново осуществить построение приложения. При режиме "Изменить и продолжить" не выводится сообщение об ошибке или предупреждение при изменении атрибутов IDL. Дополнительные сведения см. в разделе Атрибуты IDL.

К началуСодержание этой статьи

См. также

Другие ресурсы

Режим "Изменить и продолжить" (Visual C++)