Я только что обновил крупный проект C++ с VS2010 до VS2019, и у меня возникли проблемы с тем, чтобы функция «Редактировать и продолжить» работала так, как раньше, особенно в отношении параметра «Требовать, чтобы исходные файлы точно соответствовали исходной версии» (который Я буду называть настройку «требовать совпадения», потому что она короче).
Я привык запускать свою программу, внося изменения в исходный код во время ее работы, а затем устанавливая точку останова, чтобы поймать работающее приложение непосредственно перед измененным кодом. Когда точка останова достигнута, я могу нажать F5, чтобы перестроиться и продолжить.
В VS2019 кажется, что «Редактировать и продолжить» не будет работать без параметра «требовать совпадение», но установка точек останова в существующем коде не может быть выполнена с помощью «требовать совпадение» после внесения каких-либо изменений.
Есть несколько обходных путей, но ни один из них не идеален. Можно включить требование соответствия для сборки и запуска программы, затем после внесения некоторых изменений в код отключить его, чтобы установить точку останова, затем снова включить его для перестроения и продолжить. Это огромная боль. Можно использовать паузу и продолжать принудительно пересобирать любые изменения, но это работает только в том случае, если изменение кода достаточно полно для сборки. Если я хочу прерваться, чтобы проверить переменную, это не сработает. Один или два раза мне удавалось установить точку останова на измененном коде, и он автоматически переходил к устаревшему коду, что приемлемо, но я не могу добиться этого сейчас. Кроме того, теперь у меня есть точки останова, которые отображаются как действительные в отредактированном коде, который был перестроен, и я знаю, что он работает, но точки останова не срабатывают.
Любые решения здесь, или «Редактировать и продолжить» просто не работает так, как раньше?
Вот несколько фотографий...
Во-первых, во время работы моей программы я внес некоторые изменения в файл surfdraw_panels.cpp, а затем добавил точку останова. Он показывает следующее сообщение...
Затем загружает [устаревшую] версию кода с точкой останова, установленной в устаревшем коде...
В других случаях, когда я вношу изменения, я получаю другой результат, и он вообще не позволяет мне установить точку останова... В VS2010 можно было отключить параметр «требовать совпадение» и по-прежнему использовать « Изменить и продолжить», но VS2019 этого не допустит, хотя это по-прежнему рекомендуемое «решение» в сообщении!
Проект Github, который показывает проблему, приведен ниже. Это простое диалоговое приложение MFC, созданное мастером создания новых проектов в VS2019. В диалоговом окне есть единственная кнопка и некоторый простой код, который что-то делает в кнопке. Чтобы воссоздать проблему, запустите приложение в отладчике, затем внесите изменения в OnBnClickedButton1() и попробуйте установить точку останова.