VS выполнение кода отличается от кода файла - PullRequest
2 голосов
/ 12 марта 2009

Кто-нибудь когда-нибудь отлаживал в Visual Studio, и кажется, что он выполняет другой код, нежели код, который просматривается? Иногда он даже входит в то, что кажется пробелом в файле, через который проходит, но VS все равно что-то выполняет?

Это случалось несколько раз, когда кто-то заставлял меня что-то очищать в каталоге Application Data в каталоге пользователя. Однако я не могу вспомнить, что это было, и подумал, есть ли у кого-нибудь какие-нибудь идеи.

Ответы [ 3 ]

2 голосов
/ 12 марта 2009

Существует четыре наиболее вероятных причины.

Причина 1: вы фактически запустили не результат компиляции, а какой-то другой файл. Путь к исполняемому файлу для запуска задается на странице «Отладка» свойств проекта.

Причина 2: у вас включена оптимизация. В этом случае компилятор сохраняет только строку кода - для информации скомпилированного кода для одного кода, а не для другого. Вы увидите, что после того, как вы нажмете «шаг за шагом», вы на самом деле прыгаете на несколько операторов вперед или что вы не можете получить доступ к некоторым значениям переменных. Либо отключите оптимизацию, либо переключитесь с интерактивной отладки на запись в журнал.

Причина 3: база данных программы (файл .pdb, хранящий привязки строк кода к скомпилированному коду) не синхронизирована с скомпилированным файлом. Проект «Перестройка» обычно помогает.

Причина 4: база данных программы (см. Причину 3) в папке, где расположен исполняемый файл, устарела, поскольку VS помещает базу данных программы в другое место при каждой компиляции). Путь, куда поместить файл .pdb, задается в свойствах компоновщика проекта.

1 голос
/ 12 марта 2009

Прикрепляете ли вы отладчик к запущенной программе? Если это так, возможно, вы внесли изменения в исходный файл, но забыли скомпилировать код. Я буду иногда делать это, хотя это довольно легко обнаружить.

1 голос
/ 12 марта 2009

Если ваш код оптимизируется (свойства проекта, сборка, «оптимизировать код»), то выполняемый код не обязательно будет соответствовать коду в среде IDE. Обычно это вызвано попыткой отладки сборки выпуска. Однако в некоторых случаях это не так.

...