Выполнение кода VS отличается от файла кода

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

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


person Adron    schedule 12.03.2009    source источник
comment
Причина 3 отмеченного ниже ответа сделала это. По какой-то причине казалось, что он использует/создает его неправильно. Сдул каталог объектов и бум, работал как шарм.   -  person Adron    schedule 13.03.2009


Ответы (3)


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

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

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

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

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

person sharptooth    schedule 12.03.2009

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

person FryGuy    schedule 12.03.2009

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

person tsimon    schedule 12.03.2009