Visual Studio 中的缓慢调试问题

89

在我的Visual Studio中,即使只在C#控制台应用程序中写了一行返回语句,在按下F5之后执行实际代码(我的意思是按下F5后停在单个返回语句上的时间 - 我在main函数中的返回语句上设置了断点)。出了什么问题?是否有一个检查清单?

我正在使用Visual Studio 2008 VSTS版本,并在Windows Server 2003 x64上进行调试。


2
只是为了确保一下...在尝试运行代码时,您有多少可用内存?根据我的经验,VS占用大量内存... - RSolberg
1
你的硬件配置是什么?Visual Studio 对磁盘和 CPU 的要求很高,因此预算较低的机器性能会受到影响。 - William Holroyd
1
在VS中,有超过2-3个条件断点会被处理得很糟糕... - Simon Buchan
2
它们都列在“调试->窗口->断点”中(Ctrl-Alt-B)。但如果您设置了任何断点,您会知道的... - Simon Buchan
请查看此处 https://blogs.msdn.microsoft.com/visualstudioalm/2015/03/03/make-debugging-faster-with-visual-studio/ - NoWar
显示剩余4条评论
24个回答

153
您可能需要删除所有断点---请注意,您需要点击“删除所有断点”按钮(或使用 Ctrl + Shift + F9),而不是逐个删除它们。如果Visual Studio已经搞乱了您的解决方案设置,后者将无法起作用。您可能需要先添加一个断点,以使此操作有效(聪明吧?)。
如果最坏的情况发生,您可能需要删除您的.suo文件,并让Visual Studio从头开始创建一个新的。请注意,这将丢失您的个人解决方案配置设置(仅限于此解决方案,而不是任何其他解决方案)。但是,您可以将文件移动/重命名到其他地方,以确定是否存在此问题;这样,您就可以随时将其移回来。我看到一些在线资源还建议删除(移动/重命名).ncb 文件。

2
你好,zweiterlinde。我发现瓶颈应该是网络问题。当我拔掉网络电缆时,调试性能非常好。你有任何想法为什么会这样吗?如何进一步评估呢? - George2
+1 非常感谢,实在是太好了。在我的情况下,删除suo文件完美地解决了我的问题。 - Dean Seo
删除我的18MB的.suo文件,在VS启动时节省了约一分钟的加载时间,每次从调试模式返回后节省了约半分钟的时间。感谢这个提示! - real_yggdrasil
尝试这样做:当调试器最终在断点处停止时,请查看断点。是否有多个实例的断点被VS创建了?如果是,删除它们全部。此后进入调试器应该会非常快速。 - Olumide
我甚至没有设置那么多断点。这个修复了一切! - Adam
显示剩余8条评论

26

我以前见过这种情况。尝试删除 所有 断点,然后设置你想要的断点。按下 F5。现在速度更快了吗?

我刚注意到你提到了设置 .NET 源代码调试功能。尝试禁用它。你与 Microsoft 源服务器的网络连接可能很慢。还要在菜单 工具选项调试符号 中禁用任何符号服务器连接。

此外,尝试在菜单 工具选项调试常规 中禁用“启用属性评估和其他隐式函数调用”。


1
在我的断点窗口中,只有一个位于我的Main函数的返回语句上。还有其他检查清单吗? - George2
1
添加了更多的尝试内容,希望能有所帮助。 - m-sharp
这里有另一个隔离问题的想法。尝试断开网络电缆,重新启动Visual Studio并在项目上按F5。这会改变什么吗? - m-sharp
1
尝试禁用它,你连接到微软源服务器的网络可能很慢。同时,在“工具”>“选项”>“调试”>“符号”中禁用任何符号服务器连接。
  • 这对我有用。
- Yousuf Azad
为什么我的解决方案被配置为从离线的网络共享加载符号,我永远不会知道... 就是这样! - djv
显示剩余3条评论

20

或者删除与您的解决方案(.sln)文件相邻的.suo文件。这解决了我在调试会话启动和停止时遇到的问题。


+1 为了拯救我的理智(和避免我重新安装 VS2010)。谢谢! - Chuck Dee
这也是MSDN上的参考解决方案:https://social.msdn.microsoft.com/Forums/vstudio/en-US/e58cd8c6-306d-4668-a4b1-a1bd033547dd/starting-and-stopping-debugging-session-is-slow-er-than-usual?forum=vsdebug - ecoe
确认这也适用于旧版本的2003.NET和2005。一个应用程序有几个断点,运行良好。添加了更多断点后......在调试时CPU使用率达到100%,VS中出现可怕的闪烁。关闭VS,删除.suo,重新打开,调试速度再次快了。 - AlainD
这是我发现的解决方案,每当VS在调试方面变得太慢时,它总是有效。 - Graviton
或者在删除之前先重命名.suo文件,这样就可以恢复到以前的状态。 - Peter Mortensen

12

我也遇到过这个问题。尝试了所有列出的建议并删除了所有Visual Studio扩展后,我们最终发现 IntelliTrace 不知何故被启用了。禁用它就解决了问题。

如何启用和禁用 IntelliTrace


它还可以解决使用 SharpDX 的项目的问题- 对我很有效,现在图形性能恢复正常。 - komorra
在使用SharpDX和Debug-Build的特殊情况下,我遇到了相同的效果,但只是启用了DX调试。如果不需要它,请搜索“DeviceCreationFlags.Debug”并禁用它。 - thewhiteambit
在VS2015中,我取消了“启用Intellitrace”的勾选,并单击了“确定”。后来发现你必须从“Intellitrace和调用信息”更改为“仅Intelllitrace事件”; 如果不这样做,“启用Intellitrace”将保持选中状态! - smirkingman
问题已解决!(不要相信微软的评论:“此主题仅适用于Visual Studio 2010 Ultimate。”)。我使用的是2017免费版,它大大加快了调试速度! - marsh-wiggle
在VS 2017及以上版本中,IntelliTrace是仅企业版才具备的功能,因此这并没有解决我的问题(因为我只有VS 2017专业版)。 - FoxDeploy

6

您是否设置了很多断点?这些会使启动时间变慢。每次将新模块加载到进程地址空间中时,都需要检查它们是否有效。


我在用户模式代码中只设置了一个断点。但是我记得一周前我使用 Visual Studio 的源代码调试功能,在 .Net 内部代码中设置了一些断点。有办法检查我设置的所有断点,包括 .Net 内部的断点吗? - George2
没有错误,但是还是很慢,有什么其他的想法吗? - George2
不是很确定,看起来你的硬件应该没问题,其他我会尝试的所有项目似乎都已经被其他评论者勾选了。此时,我可能会尝试重新安装Visual Studio - 也许安装出了问题。 - 1800 INFORMATION
我已经重新安装到另一个目录,但仍然出现相同的症状。还有其他的想法吗? - George2

6
请前往菜单 工具选项调试器符号,检查是否设置了公共符号或UNC网络路径。还要检查菜单 Tools* → 选项调试器常规,看是否设置了源服务器。
所有这些都可能会受到缓慢的网络速度或不可用服务器的影响,5分钟的等待时间是网络超时。
如果未设置任何选项,请检查是否设置了_NT_SYMBOL_PATH环境变量。

谢谢,这就是我的全部内容。我偶尔会在模块窗口中加载1或2个符号文件,通过UNC路径指向我们构建的符号,或者更少见地,指向不再存在的虚拟机。没有意识到它保存了所有这些路径在调试器/符号设置中。 - brian

6

我的同事在使用Visual Studio时遇到了非常慢的响应速度,而且在调试过程中执行一步操作需要几分钟时间。

根本原因是一个反病毒程序(Threatfire)在运行Visual Studio时出现了问题。立即终止该进程可以解决所有问题。


在工作中,我的Web调试经历非常糟糕,直到我禁用了ESET杀毒软件。按下F5后,我的响应时间从2-3分钟降至2-3秒。 - James Hulse
1
暂时停用ThreatFire对我也有很大帮助 - 谢谢!(暂时关闭Avast!也有一点帮助,但不是那么明显。) - Jon Coombs
Malwarebytes 是导致我的问题的原因。停止它后,速度慢的问题得到了解决。 - Ben Rubin
我也使用 Malwarebytes...退出它后,VisualStudio的调试速度更快了。调试启动之前需要15秒,现在只需要2秒)...谢谢! - BlueDev

5
在我的情况下,将调试符号的选项“自动加载符号”“所有模块”更改为“仅指定的模块”解决了问题。您可以从菜单工具选项调试符号更改此选项。

3

另一个原因是选项ShowOtherThreadIpMarkers。该值为1会使Visual Studio(2010)变得难以忍受,每次调试步骤需要3-5秒钟。如果将其设置为0,则速度会加快。

这个选项是什么?我不知道。我在Visual Studio用户界面中找不到它。我取消了所有可能的调试选项,但没有任何作用。

所以我去了导入/导出设置,并加载了我之前保存的旧设置,一步一步向后比较vssettings文件,直到Visual Studio再次变快等等。

我想强调的是,如果您在断点上停止调试模式时加载设置,它们会立即生效。您无需停止调试器并重新启动。


+1 谢谢,这也是我在VS2015中使用C# Web应用程序时遇到的问题。我在调试时禁用了工具栏中的“在源代码中显示线程”选项,问题就解决了。如果该选项在工具栏中不可用,则可以通过右键单击线程窗口中的任何线程找到它。 - vgru

2
在我的电脑上,使用调试器运行程序的速度大约比不使用调试器慢了10倍。尝试了这里提供的每一个解决方案后,我逐个调整了调试器设置并启用/禁用,看是否有所改善。对我而言,最终发现在调试设置中禁用“加载模块时抑制JIT优化”极大地改善了情况。请保留HTML标签。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接