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

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

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

这是在VS2010 Premium内。

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

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

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

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属性,因为这样做需要它获取锁定对象,但由于程序将保留,因此无法执行此操作在断点处于活动状态时永远锁定