2009-04-24 39 views
34

我已经成功地提出了一些Visual Studio调试器可视化工具,和他们工作得很好,除了一些对象,我得到一个超时错误,当我尝试用objectProvider.GetObject()如何防止Visual Studio调试器可视化器超时?

System.Exception: Function evaluation timed out. 
    at Microsoft.VisualStudio.DebuggerVisualizers.DebugViewerShim.PrivateCallback.MaybeDeserializeAndThrowException(Byte[] data) 

的时间反序列化对象(即使点击可视化图标后大概一秒钟),尽管我的其他一些可视化工具也可以很好地工作,即使大数据对象显示时间较长(5-10秒),仍然不会超时。

我已经做了一个自定义对象源来限制序列化到我需要显示的字段。我还能做什么来使数据在没有超时的情况下反序列化?

回答

41
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger 

我认为这没有记录,但您可以尝试更改以上注册表项中的某些超时,然后重新启动Visual Studio。

+24

看起来像`NormalEvalTimeout`是要更改的值(以毫秒为单位指定值)。如果您使用此功能,则QuickwatchTimeout也值得更新(悬停在调试器中的变量上以查看其当前值)。如果您需要恢复它们,这些值的默认值分别是5000和15000。 – alastairs 2010-10-20 14:42:58

5

我最近被这在VS2012命中和谷歌搜索后,我发现this

由于异常消息说,此异常意味着调试器 可视化的数据表上超时。在VS调试器中,每个 表达式评估窗口(例如观察窗口,本地窗口, 数据提示,自动窗口等等)具有不同的默认最大表达式 评估超时值。对于数据提示,我们宁愿给出短暂的 超时值,因为否则它将提供差的用户 表达式。如果您确实想要使用数据表的 的可视化功能,您可以将表达式添加到手表,并尝试使用 将其可视化(因为观察窗具有更长的超时值)。如果 确实希望摆脱datatip中的此超时,则可以尝试增加数据提示的超时值 。超时值是在 “DataTipTimeout”注册表项下的设置: HKEY_CURRENT_USER \ Software \ Microsoft \ VisualStudio \ 10.0 \ Debugger注意: 您应该为64位操作系统探测WOW64Node。您还可以在此键下看到其他 窗口的默认超时值。

0

到Visual Studio调试工作做好 - 在 “WPF可视化”(在WPF应用程序进行测试),您需要在注册表中找到 “机” 窗口: HKEY_CURRENT_USER \ SOFTWARE \微软\ VisualStudio的\ 12.0 \调试\ 例如,DWORD参数“LocalsTimeout”和默认值(1000)设置为足够大的值,即5000。

相关问题