c# visual studio 2013高级调试问题

本文关键字:调试 问题 高级 2013 visual studio | 更新日期: 2023-09-27 18:08:24

我有一个有趣而又有点恼人的问题。

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

例如:

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的新功能?我想定期调试回来,如果可能的话,感谢协助。

c# visual studio 2013高级调试问题

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

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