我正在使用VS2012 ultimate调试项目,但现在经常遇到这个问题。通常它发生在我想要扩展集合类型值(例如,List<>,Dictionary<>等)以观察其值时。它只是没有显示值,然后永远挂起,错误信息就像 “由于先前的功能评估超时,功能评估被禁用。您必须继续执行以重新启用功能评估。”我唯一能做的就是重启调试器。 有人可以帮忙吗?
答案 0 :(得分:4)
当您在调试器中展开一个值以查看其成员时,调试器在幕后执行称为“func-eval”的事情,这基本上意味着它“唤醒”调试对象中的一个线程并运行一些代码在其中以显示其结果。这通常是执行属性的getter或对象的.ToString()方法。
有时候,评估可能需要太长时间(通常是因为属性获取器在另一个线程持有的某个锁上等待等待,在这种情况下,你可以永远等待它永远不会返回,因为所有线程除外正在执行func-eval的线程被调试器暂停。在这些情况下,一段时间后调试器将决定“放弃”并显示您遇到的消息。您不必重新启动应用程序以尝试再次评估属性 - 您只需执行另一个步骤(F10)。
作为一种更持久的解决方案,您可以执行以下两项操作之一:
[DebuggerBrowsable(DebuggerBrowsableState.Never)]
置于其上方以防止调试器显示它。