Переменная не существует в текущем контексте при отладке
Я вставил две временные переменные и хочу видеть их значения, но я не могу. Я мог бы решить это, разместив его в другом месте, но мне интересно, почему это поведение существует.
public float Value
{
get
{
float result = Memory.ReadFloat(Address);
double Radian = Math.Round(result, 2); // **BREAK POINT HERE**
double Degree = Math.Round(Math.Round((double)(result * 180 / Math.PI)), 2); // **BREAK POINT HERE**
return result; // **BREAK POINT HERE**
}
}
Я разбиваю все три точки, но я не могу заставить Visual Studio 2012 показать мне значения. Только результат будет отображаться в окне локальных жителей, нет переменной под названием Radian или Degree.
Если я добавлю часы для переменной Radian, например, я получаю это сообщение с красным крестиком:
Radian - имя "Radian" не существует в текущем контексте
Ответы
Ответ 1
Возможно, локальные переменные были оптимизированы компилятором JIT. Поскольку вы используете Visual Studio, вы можете переключить конфигурацию на Debug и rebuild.
Если нет, вы можете настроить компилятор JIT для отключения оптимизаций и генерации информации отслеживания - см. здесь о том, как настроить конфигурацию. Это должно позволить вам видеть локальную переменную, когда вы присоединяете отладчик к процессу.
Ответ 2
Я столкнулся с другим сценарием в VS2012, который заставляет переменные "исчезать" в режиме отладки:
убедитесь, что у вас нет этого:
if(false)
{
.
}
else
{
//Code here will be optimized and variables will not be available.
}
Ответ 3
Если вы пытаетесь отлаживать сборку выпуска (режим выпуска вместо режима отладки), вы получите эту ошибку. Измените конфигурацию вашего решения на Debug (любой процессор), и вы сможете увидеть значения переменных в ближайшем окне.