Почему у меня не работает Edit & Continue в VS2008 с устаревшим проектом C32 win32?

Если я создаю новый проект Win32 C++ в VS2008, я могу использовать Edit & Continue с ним просто отлично, но с этим унаследованным проектом я работаю с моими попытками использовать / включить его не удалось.

Вот что я проверял:

Сервис -> Параметры -> Отладка -> Редактировать и продолжить -> Включить редактирование и продолжить включен.

Формат отладочной информации: база данных программы (/Zi)

Генерация кода -> Включить связывание на уровне функций: Да (/ Гр)

Искал поврежденный файл.ILK. Я не могу найти файлы.ILK - они все еще используются в 2008 году?

Но когда я вхожу в программу, меняю следующую строку и снова делаю шаг, я получаю:

"Этот исходный файл изменился. Он больше не соответствует..."

скорее, чем

Msgstr "Хотели бы Вы изменить и продолжить, чтобы применить изменения кода?"

Что плохого в этом проекте, что E&C не работает?

2 ответа

Это окно сообщения

Этот исходный файл был изменен. Он больше не соответствует версии файла, используемого для построения отлаживаемого приложения.

Кажется, только появляется, когда я сделал изменение кода на той же строке, где находится точка останова.

Я обнаружил, что могу просто нажать кнопку ОК. И когда я затем нажимаю F10, чтобы фактически выполнить измененную строку, "Edit and Continue" запускает и перекомпилирует код.

После этого точка останова отключается (она показывает желтый треугольник с восклицательным знаком):

отключенная точка останова

Чтобы снова включить его, вы можете просто щелкнуть правой кнопкой мыши точку останова и выбрать "Местоположение...":

щелчок правой кнопкой мыши

что приводит вас к этому диалогу:

диалог определения точки останова:

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

Я предполагаю, что у вас есть символы отладки /etc, и унаследованное приложение C++ было скомпилировано с этой поддержкой...

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

Я подозреваю, что изменения в формате выходного кода сделают VC++ 2008 несовместимым... так как я сомневаюсь, что Microsoft добавила такую ​​обратную совместимость в (до VS 2008, я думаю, что они даже затрудняли использование старых версий.Net без использования специальных VS)

Другие вопросы по тегам