Подтвердить что ты не робот

Переменная не существует в текущем контексте при отладке

Я вставил две временные переменные и хочу видеть их значения, но я не могу. Я мог бы решить это, разместив его в другом месте, но мне интересно, почему это поведение существует.

   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" не существует в текущем контексте

4b9b3361

Ответ 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 (любой процессор), и вы сможете увидеть значения переменных в ближайшем окне.