繁体   English   中英

Visual Studio 2008:调试托管代码时,下一行的步骤非常慢

[英]Visual Studio 2008 : Step to next line is very slow when debugging managed code

当通过F10逐行单步执行C#代码时,调试器需要一秒钟才能到达下一行。

我已经尝试删除所有手表和断点,但这没有任何区别。

这是正常的吗? 很长一段时间以来都是这样,所以我甚至不记得这是否更好。 我的开发计算机是一台四核机器,没有后台任务活动,剩下大量内存。

如果这不正常,我还能尝试什么? 它仍然可以使用,但一个不那么迟钝的用户界面将是伟大的...

可能发生的是你在调用堆栈框架中有一个变量,它有一个昂贵的.ToString方法。 在2008年,无论窗口是否实际可见,都会在每一步重建调用堆栈窗口的数据。 构建此窗口的一部分将调用.ToString,如果它们具有重写的.ToString,则会在参数列表中显示这些值。 尝试禁用隐式.ToString调用,看看是否能解决问题。

  • 工具 - >选项 - >调试器
  • 取消选中“启用隐式.ToString调用”

我发现如果你可以选择调试打开的非托管代码,即使你只调试托管代码,调试器也可能需要一段时间才能在行之间进行调整。 尝试关闭该选项( 项目>属性>调试>启用调试器>启用非托管代码调试 )。

我尝试了以上所有方法。 取消选中“在源中显示线程”按钮可以修复它。

在我的情况下,禁用“在一个进程中断时中断所有进程”(工具/选项/调试器)将“步进”的时间从2-3秒减少到几分之一秒。

我不知道为什么这个选项对单步执行有如此大的影响。 顺便说一句,我想如果你使用的线程不是彼此独立的,那么禁用这个选项可能会带来麻烦。

我曾经经历过缓慢的调试,因为我已经设置了VS来寻找不再存在的网络共享上的pdb文件。

请在此处查看:工具 - 选项 - 调试 - 符号 - 符号文件(.pdb)位置

如果“自动”窗口打开,我听说过这种问题。 尝试关闭它,看看你的表现是否有所改善。

如果您还没有,您可能还应该安装“Visual Studio 2008 SP1调试和断点”补丁。 请注意,此修补程序位于SP1之上。 补丁的文档没有专门解决你看到的缓慢,但它是一个非常大的补丁,你可能会很幸运。

Tools > Options > Debugging > General关闭启用地址级调试选项。
这给我带来了巨大的变化。

你有很多Watch表达式吗? 它们将在每个步骤之间进行评估,如果它们需要时间运行,您会在步进时注意到它是一个延迟。

在停止C#调试之前,我遇到了10秒的延迟,然后才能再次启动C#调试。 在此期间VS2008会挂起,没有任何可点击的内容。 Project Properties -> Debug禁用Visual Studio宿主进程后,现在有0秒的延迟。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM