MSVSMON.EXE在使用VS进行调试时非常缓慢

9
我正在尝试使用Visual Studio 2013在Windows 7上与IIS 7.5一起调试ASP.NET Web应用程序,但是调试过程非常缓慢,每次页面加载需要大约60-90秒。我注意到,在页面加载时,MSVSMON.EXE(Visual Studio远程调试监视器)保持在我的四核机器的25-30% CPU上,我怀疑它是罪魁祸首。
在另一台Windows 8和IIS 8.5 PC上,调试速度要快得多,几乎没有意义的MSVSMON使用率。我尝试模仿前者机器的每个调试设置以及Visual Studio和IIS的设置,但仍然非常缓慢,并且MSVSMON仍然会达到高CPU使用率。
为什么会这样?我该怎么做才能解决问题并降低CPU使用率?

1
我也是,但是针对“普通”的Windows应用程序。 - mmmmmmmm
在互联网上我读到有人在运行 Profiler 后遇到了这种问题。由于我也时不时地使用 Profiler,我强烈怀疑 Profiler 改变了我的系统,导致了减速。也许它一直在进行分析而没有存储结果之类的事情。 - mmmmmmmm
也许我有线索:大部分时间一切都很慢的原因是使用了数据库访问。我使用本地的 SQL Server 2012 实例。我的大多数同事使用的是 2008 或 2014 版本。一个新同事也安装了 2012 并且现在也遇到了同样的减速问题... - mmmmmmmm
好的...不是SQL服务器...但我找到了问题所在:IntelliTrace默认启用。禁用它使得调试时一切都变得更快。也许对于ASP.NET也是启用的? - mmmmmmmm
这也发生在我身上...但我最近刚安装了ReSharper。所以,这个分析工具是否调整了某些设置导致了挂起时间? - DRapp
3个回答

13

当我在一个经常运行的代码中设置了条件性断点时,我遇到了这个问题。尝试暂停调试器只会导致 Visual Studio 什么也不做(除了使暂停菜单选项变灰)。

在四核系统上,Visual Studio 远程调试监视器占用了约30% 的 CPU。

移除条件性断点解决了这个问题。


这真的帮了我,正是我的问题所在。 - tube-builder
这是有用的信息。我不知道条件断点会做到这一点。 - theyetiman
1
据@theyetiman所说:条件的评估非常低效(至少在VS2013及更早版本中...我还没有尝试过VS2015)。 - Eric J.
对我来说,非常遗憾一个如条件断点这样有用的功能会引发这种问题,我不再使用它了!! - Patrick from NDepend team

1
这个解决方案(感谢David W Gray)值得单独回答。
尝试禁用IntelliTrace(调试 => IntelliTrace => 打开IntelliTrace设置...)。

1
你是否在两台机器上都调试同一个应用程序?如果不是,则需要检查II7.5/Windows 7应用程序与win8 IIS 8.5应用程序抛出的异常数量,因为调试器对每个异常都要做很多工作,所以会放大减速效果。
如果是这个问题,你可以尝试关闭调试->输出窗口->异常消息,这应该会有所帮助。当然,如果你的应用程序抛出了足够多的异常,导致这种减速,并且你有能力重新设计代码,以减少在非异常情况下抛出的异常数量,那也会有所帮助。
如果还不行,你可以尝试关闭所有输出设置和IntelliTrace,因为所有这些东西都可能影响性能,如果这解决了问题,你可以逐个打开它们,找出罪魁祸首——即使它们是相同的应用程序,在版本之间的内部更改可能会导致调试器处理的事件大不相同。
希望对你有所帮助。

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