C# Visual Studio 2013 高级调试问题

问题描述 投票:0回答:1

在调试会话期间,我无法获取没有任何实际分配的变量。

举个例子:

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

在上面的方法中,如果我在 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
1个回答
1
投票

您可能正在以 Release 模式进行构建。

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

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