Почему у меня не работает 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)