C#visual studio 2013高级调试问题

时间:2014-06-13 11:43:25

标签: c# visual-studio-2013

我有这个有趣且有些烦人的问题。

在调试会话期间,我无法获得没有任何有形赋值的变量。

例如:

public void SomeMethod()
{
      string TheString = "Hello World";
      Thread.sleep(1000); // Breakpoint here
} 

在上面的方法中,如果我在TheString获取其值后立即设置断点,现在因为TheString实际上从未在任何执行语句中使用。在设计时,变量是灰色的,当你将鼠标悬停在它上面时,它表示“从不使用局部变量TheString”

所有这一切都很好,但在调试会话期间,您无法通过即时窗口获得对TheString的任何引用。就像变量甚至不存在一样。

例如:

?TheString “TheString”这个名称在当前上下文中不存在

现在做什么工作:

 public void SomeMethod()
    {
          string TheString = "Hello World";
          Thread.sleep(1000); // Breakpoint here
          MessageBox.Show(TheString); 
    } 

它的工作原理是因为该值在运行时在执行路径中使用。 在这个阶段,我不确定这是否是Visual Studio 2013的新功能?如果可能,我想要定期调试,感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您可能正在发布模式下构建。

发布模式下构建时,编译器会执行一些代码优化。其中之一是删除从未使用过的变量。