2009-03-12 1 views
2

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

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

+0

Причина 3 отмеченного ответа ниже сделала это. По какой-то причине это, казалось, использовало/создало его неправильно. Отбросьте каталог объектов и бум, работая как шарм. – Adron

ответ

2

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

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

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

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

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

1

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

1

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