如何防止Visual Studio调试器可视化器超时?

yoy*_*sef 34 debugging debuggervisualizer visual-studio

我已成功制作了几个Visual Studio调试器可视化工具,并且它们工作得非常好,除了在某些对象上我尝试使用反序列化对象时出现超时错误 objectProvider.GetObject()

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

超时发生的时间相当快(可能在我点击可视化器图标后大约一秒钟),即使我的其他可视化工具工作正常,即使大型数据对象显示更长时间(5-10秒)仍然没有超时.

我已经创建了一个自定义对象源来限制序列化到我需要显示的字段.我还能做些什么来使数据反序列化而不超时?

Yin*_*ing 42

HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\9.0\Debugger
Run Code Online (Sandbox Code Playgroud)

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

  • 看起来`NormalEvalTimeout`是要更改的值(值以毫秒为单位指定).如果使用此功能(在调试器中将鼠标悬停在变量上以查看其当前值),则"QuickwatchTimeout"也值得更新.如果需要还原它们,这些值的默认值分别为5000和15000. (25认同)
  • 我正在 VS2017 中寻找此内容,但在任何版本文件夹下都没有任何内容。 (4认同)
  • 与其他注册表项一样,确保Visual Studio已关闭(没有"devenv"进程正在运行),否则VS将在您退出时覆盖该值! (3认同)
  • VS2019 的类似问题 - 此设置移至何处? (3认同)

lda*_*dam 5

我最近在VS2012遇到了这个问题,经过谷歌搜索我发现了这个:

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