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

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

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’

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

如果没有,您可以配置JIT编译器以禁用优化并生成跟踪信息 – 请参阅此处有关如何设置配置的信息 。 这应该允许您在将调试器附加到进程时查看局部变量。

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

确保你没有这个:

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

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

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