【问题标题】:MSVSMON.EXE very slow debugging with VSMSVSMON.EXE 用VS调试很慢
【发布时间】:2014-05-13 21:19:57
【问题描述】:

我正在尝试在 Windows 7 上使用 IIS 7.5 从 Visual Studio 2013 调试 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 使用率?

【问题讨论】:

  • 对我来说也一样,但使用的是“普通”Windows 应用程序。
  • 我在互联网的某个地方读到有人在运行 Profiler 后遇到了此类问题。由于我有时也使用探查器,我强烈怀疑探查器更改了我系统中的某些内容,导致速度变慢。也许它总是在不存储结果或类似的东西的情况下进行分析。
  • 也许我有一个线索:大多数时候一切都很慢是在使用数据库访问时。我使用 SQL Server 2012 的本地实例。我的大多数同事都使用 2008 或 2014。一位新同事也安装了 2012,现在速度也一样...
  • 好吧......不是 SQL 服务器......但我发现了我的问题:默认情况下启用了 IntelliTrace。禁用它会使调试时一切工作得更快。也许它也为 ASP.NET 启用了?
  • 这也刚开始发生在我身上……但我最近才安装了 ReSharper。那么,这个分析工具是否调整了一些导致挂起时间的设置?

标签: asp.net visual-studio debugging iis


【解决方案1】:

我在频繁运行的代码中设置条件断点时遇到了这种情况。尝试暂停调试器只会导致 Visual Studio... 什么都不做(除了灰色的暂停菜单选项)。

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

删除条件断点解决了问题。

【讨论】:

  • 这对我很有帮助,正是我的问题。
  • 这是有用的信息。我不知道条件断点会这样做。
  • @theyetiman:显然对条件的评估非常低效(至少在 VS2013 和更早的版本中......我还没有尝试过 VS2015)。
  • 对我来说也是如此,非常可悲的是,像条件断点这样有用的功能确实引发了这个问题,我不会再使用它了!!
【解决方案2】:

您是否在两台机器上调试同一个应用程序?如果没有,要检查的一件事是 II7.5/Windows 7 应用程序与 win8 IIS 8.5 应用程序抛出了多少异常 - 调试器为每个异常做了大量工作,因此对慢速有放大作用-下。

如果这是问题,您可以尝试关闭调试->输出窗口->异常消息,这应该会有所帮助。当然,如果您有一个应用程序抛出足够多的异常导致这种速度变慢,并且您有能力重新编写代码以减少在非异常情况下抛出的异常数量,那也会有所帮助.

如果做不到这一点,您可以尝试关闭所有输出设置和 IntelliTrace,因为所有这些都可能会影响性能,如果这解决了问题,您可以将它们一一重新打开以找出罪魁祸首在哪里 - 即使它们是相同的应用程序,在不同版本之间有足够多的变化,以至于调试器必须处理的事件可能大不相同。

HTH

【讨论】:

    【解决方案3】:

    这个解决方案(感谢 David W Gray)值得单独回答。

    尝试禁用 IntelliTrace (Debug => IntelliTrace => Open IntelliTrace Settings...)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-24
      相关资源
      最近更新 更多