[VS05 C#] Не создаются локальные переменные во время отладки

stm8887429

Проблема возникла внезапно. Хз, вроде ничего не делал (по крайней мере специально).
Во время отладки (Debug mode) невозможно в Watches посмотреть локальные переменные, так как судя по всему компилятор "оптимизирует" код, даже не создавая их (в Watches пишет "The name 'xxx does not exist in the current context" а без возможности контроллировать эти переменные получается нереально отладить прогу.
Искал в настройках, где можно отменить такие "оптимизации", но не нашел
Подскажите плз, как исправить ситуацию. :confused:

klyv

переключиться с release обьратно в debug?

stm8887429

переключиться с release обьратно в debug?
я спецом в посте написал, что проблема именно в дебаг-моде

olegusmaximus

может ты просто выходишь за область видимости?

Dasar

если создать с нуля новый проект - то проблема есть или нет?

stm8887429

проблема исчезает
правда мне важен тот проект :crazy:
сделал в "проблемном проекте" функцию заглушку, в которой единственное, что делается - создается переменная и ей присваивается значение.. брейкпоинт на присваивание не ставится (точнее ставится до запуска, а после - сразу же сносится в конец функции)

Dasar

зайди в настройки проекта, и сними галку Optimize code
project -> Properties -> Build -> General -> Optimize code

stm8887429

Проблему с перекидыванием брейкпоинта это решает, но не решает первоначальную.
Вообще было так: сначала этой галки не было (на оптимизации но описанная в самом начале проблемы была, затем, когда перебирая все настройки, я поставил галочку, то часть переменных стала видна (например не были видны ArrayList'ы, но при выставлении галочки стали видны).
Там еще нюанс в том, что, например, во многих методах все переменные нормально видны, а проблемы возникают (по крайней мере там я это заметил) в одном из методов причем в одном из его if-ов внутри операторных скобок (если убрать if и операторные скобки, то все эти переменные нормально видны в дебаг-моде как такое может быть - не представляю.

olegusmaximus

Давай этот код, строку и переменную, которую не видно

Dasar

попрробуй грохнуть файлы проекта, которые хранять временные настройки:
*.suo
*.user
директорию bin
директорию obj

stm8887429

В общем нашел в чем проблема, но не понял изза чего... Код был такой.
private void Button_Click(object sender, EventArgs e)
{
if (Условие)
{
текст
}
if (Условие)
{
текст
}
if (Условие)
{
}
if (Условие)
{
текст
}
if (Условие)
{
текст
}
if (Условие)
{
текст
}
if (Условие)
{
}
if (Условие)
{
текст
}
if (Условие)
{
текст
}
if (false) --- это мне было нужно для заглушки на некоторое время
{
текст
}
if (Условие)
{
текст
}
if (УсловиеX)
{
double tt1;
tt1 = 0; ]эту переменную не было видно в дебаггере
}
if (Условие)
{
текст
}
}

Так вот.. все If-ы, которые были описаны за if(false) имели описанную мной проблему, те, что были описаны до if(false) - все ОК.
Закомменчивание этого условия или переписывания в виде double x = 0; if (x==1) делают все нормально.
Это такая фишка VS?
Оставить комментарий
Имя или ник:
Комментарий: