在调试/单步调试中检查变量时,函数评估超时

时间:2012-03-15 22:46:38

标签: c# .net visual-studio-2010

在调试/单步执行代码时,我尝试检查监视中的变量,每次内部变量说明函数评估超时都会出错。

有谁知道这是为什么以及如何避免它?因为它影响了我调试代码的能力。

这是在VS2010 Premium内。

2 个答案:

答案 0 :(得分:21)

此问题的最可能原因是隐式评估属性或ToString方法,这会导致CLR评估线程出现问题。要验证此操作,请关闭隐式评估。

  • 工具 - >选项
  • 调试
  • 取消选中“启用属性评估和其他隐式函数调用”

然后重新启动您的方案,看看它是否有效。

答案 1 :(得分:5)

Visual Studio执行属性getter来获取它的值,如果它需要很长时间,因为它做了一些昂贵的事情就会得到这个错误。考虑:

public class foo
{
    private object lockObject = new object();
    public int bar
    {
        get
        {
             lock(lockObject){
                return 42;
             }
         }
     }
     public int aMethod()
     {
         lock(lockObject)
         {
             var a = this.bar;
             return a*2;   //insert a break point here
          }
      }
}

如果在aMethod的return语句中添加断点,调试器将无法评估bar属性,因为这样做需要它获取锁定对象,但是它不能这样做,因为程序将在断点处于活动状态时永久保持锁定