调试时,当前上下文中不存在变量

问题描述 投票:24回答:4

我插入了两个临时变量并希望看到它们的值,但我不能。我可以把它放在其他地方来解决它,但我很感兴为什么这种行为存在。

   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向我展示价值观。只有结果会显示在locals窗口中,没有名为Radian或Degree的变量。

例如,如果我为Radian变量添加一个监视器,我会收到带有红色十字图标的消息:

Radian - 当前上下文中不存在名称'Radian'

c# .net debugging properties visual-studio-2012
4个回答
59
投票

JIT编译器可能已经优化了局部变量。由于您使用的是Visual Studio,因此可以将配置切换为Debug并重建。

如果没有,您可以配置JIT编译器以禁用优化并生成跟踪信息 - 请参阅here on how to set the configuration。这应该允许您在将调试器附加到进程时查看局部变量。


20
投票

我在VS2012中遇到了另一种情况,导致变量在调试模式下“消失”:

确保你没有这个:

if(false)
   {
   .
   }
else
   {
   //Code here will be optimized and variables will not be available.
   }

7
投票

如果您尝试在发布版本(发布模式而不是调试模式)中进行调试,则会出现此错误。将您的解决方案配置更改为Debug(任何CPU),您将能够在即时窗口中看到变量值。


0
投票

我将我的解决方案配置更改为调试(任何CPU),但这不是问题。升级到Visual Studio 2017后,我以为我在调试中,但还有一个更简单(但很重要)的步骤。 (这对大多数人来说可能是显而易见的,但我错过了。)在“解决方案配置”设置为“调试”的情况下,我必须单击“调试”旁边的向下箭头并选择“配置管理器...”,然后在相应的弹出窗口“配置”仍设置为“发布” - 我必须将其更改为“调试”并单击“关闭”按钮。从那里重新运行允许我在调试时查看所有变量。

© www.soinside.com 2019 - 2024. All rights reserved.