Debugging VS2010调试条目非常慢

Debugging VS2010调试条目非常慢,debugging,visual-studio-2010,Debugging,Visual Studio 2010,当我从调试开始(F5)或附加到ASP.NET工作进程开始调试web应用程序时,它将非常缓慢地从应用程序加载程序集,这样我就可以在程序集滚动浏览VS2010的状态栏时单独读取它们的名称 当我开始调试时,我看到MSVSMON.exe使用了50%的CPU,并锁定在50%的位置,显然填满了整个内核。还看到它被描述为VisualStudio远程调试监视器,我很困惑是否应该使用它,因为我正在调试我机器本地的所有东西 如果可能与此相关,我正在运行由RDP虚拟连接的环境 主机:Server 2008 Enter

当我从调试开始(F5)或附加到ASP.NET工作进程开始调试web应用程序时,它将非常缓慢地从应用程序加载程序集,这样我就可以在程序集滚动浏览VS2010的状态栏时单独读取它们的名称

当我开始调试时,我看到MSVSMON.exe使用了50%的CPU,并锁定在50%的位置,显然填满了整个内核。还看到它被描述为VisualStudio远程调试监视器,我很困惑是否应该使用它,因为我正在调试我机器本地的所有东西

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

主机:Server 2008 Enterprise R2双核至强2.53ghz

虚拟实例:Win7 Enterprise 6gb ram全处理器分配


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

是,调试64位程序时将使用MSVSMON.exe。由于VisualStudio完全是32位的,因此需要远程调试器来弥合这一分歧


没有任何理由假设减速是由远程调试器引起的。可能需要大力查找和加载.pdb文件。或者意外地打开了“混合模式调试”选项,以便调试器也能看到所有非托管DLL加载并找到它们的符号。当然,这些只是猜测。

菜单.调试.删除所有断点


为我工作。

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

这些不仅可以是代码的第三方组件,还可以是由图形驱动程序注入的挂钩DLL,因此有必要关注要加载的内容

在开始调试时运行Fiddler()将显示是否正在远程获取符号


即使没有为远程符号获取显式设置VS(在工具->选项调试中),它仍将遵循_NT_symbol_PATH环境变量-检查是否已设置,以及它指向什么。

我也遇到了同样的问题,尽管此解决方案没有为我解决。最后,我不得不进入工具->选项->调试->符号,取消选中符号文件(.pdb)位置,并单击空符号缓存按钮。在那之后,调试就好多了。

对我来说,问题是我安装了一个PUP(可能不需要的程序),这会减慢其他进程。在MSVSMON多次出现这种行为后,我意识到Cltmng.exe进程(来自“通过管道搜索保护”)也占用了不寻常的CPU量,将其删除解决了问题。

我在本地或远程调试、web或正常进程时没有遇到性能问题。VS在x32上为我运行,远程机器运行x64。我不知道为什么,但这对我也起作用。从调试到完成网页从20秒到3秒。但我想知道为什么!我在同一个项目中只有几个断点(从未被命中)。VS2010中肯定有一个错误,它丢失了断点或其他东西。如果按名称添加断点(break to function),调试器需要扫描加载的每个dll的所有符号,以检查是否有任何内容与给定名称匹配。这需要所有的时间,而不是一个bug。每次指令指针遇到位置时都必须计算条件断点,我猜这意味着大量的上下文切换。即使在简单的情况下,它们的性能也会非常糟糕。非常有效的一点是,这不是我描述的以每秒1左右的速度加载程序集的确切场景,但是如果您看到它加载您不拥有的程序集,这将大大减少调试条目。能够调试成带有符号源的.NET代码是非常棒的,但是只有在特定需要时才应该打开它,然后立即关闭它。