2010-07-14 59 views
7

当我从调试开始(F5)开始调试我的Web应用程序或附加到ASP.NET工作进程时,它会非常缓慢地从应用程序加载程序集,我可以单独阅读他们滚动浏览VS2010的状态栏。VS2010调试条目很慢

当我开始调试时,我发现MSVSMON.exe使用50%的CPU并锁定50%,明显填满了整个内核。也看到这被描述为Visual Studio远程调试监视器,我很困惑,如果这应该甚至被使用,因为我正在调试我的机器本地的所有东西。

我正在运行由RDP虚拟连接的环境,如果这可能与此有关。

主机:Server 2008企业版R2 Dualcore的至强2.53GHz的

虚拟实例:Win7企业6GB内存完整的处理器分配

这看起来正常吗?如果我在本地进行调试,MSVSMON是否应该运行?

+0

我在本地或远程调试Web或正常进程时都没有性能问题。 VS在运行x64的远程机器上为我运行x32。 – 2010-07-14 19:07:13

回答

19

Menu.Debug.DeleteAllBreakpoints

为我工作。

+0

我不知道为什么,但这也适用于我。从调试到完成的网页从20秒变为3秒。但我想知道为什么!我在同一个项目中只有少数断点(从来没有碰到过)。 – Sire 2011-01-26 12:29:35

+0

在VS2010中肯定有一个关于这个问题的错误,以及它失去了什么的断点。 – 2011-05-13 17:34:59

+2

如果通过名称添加断点(break to function),调试器需要扫描每个加载的dll的所有符号,以检查是否有任何符合给定名称的符号。这需要所有的时间,而不是一个错误。 – 2011-05-24 14:06:52

4

是的,msvsmon.exe将在您调试64位程序时使用。由于Visual Studio完全是32位的,因此需要远程调试器来弥合鸿沟。

没有任何理由认为减速是由远程调试器引起的。大量工作可能会发现并加载.pdb文件。或者不小心打开了混合模式调试选项,因此调试器也会看到所有非托管DLL负载并为它们查找符号。这些只是猜测当然。

3

在调试开始时搜索符号通常非常缓慢,特别是如果您配置了远程符号选项之一,并且未在MS服务器上没有符号的各种DLL上设置“忽略”。

这些不仅可以是代码的第三方组件,也可以挂钩由例如图形驱动程序注入的DLL,因此值得关注试图加载的内容。

在开始调试时运行Fiddler(http://www.fiddler2.com/fiddler2/)将显示符号是否正在远程获取。

即使未明确设置VS(在tools-> options-debug)中进行远程符号读取,它仍然会遵循_NT_SYMBOL_PATH环境变量 - 检查是否已设置以及它指向什么。

3

我有同样的问题,虽然这个解决方案并没有为我做。最后,我不得不进入工具 - >选项 - >调试 - >符号,并取消选中符号文件(.pdb)位置,并单击空符号缓存按钮。之后,调试更好。

+1

非常有效的一点,这不是确切的场景,我描述了我看到它以每秒1次左右的速度加载MY程序集,但如果您看到它加载不属于自己的程序集,将大大减少调试条目。使用符号源来调试.NET代码的能力非常棒,但只有在特定需求时才会打开迷人的效果,然后立即关闭。 – 2013-01-28 16:25:46

0

对我来说,问题是我安装了PUP(可能有害的程序),这会减慢其他进程。几次MSVSMON显示此行为后,我意识到Cltmng.exe进程(来自Search Protect by conduit)正在使用异常数量的CPU,并将其解决。