在调试/单步执行代码时,我尝试检查监视中的变量,每次内部变量说明函数评估超时都会出错。
有谁知道这是为什么以及如何避免它?因为它影响了我调试代码的能力。
这是在VS2010 Premium内。
答案 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属性,因为这样做需要它获取锁定对象,但是它不能这样做,因为程序将在断点处于活动状态时永久保持锁定