在调试时填充ListBox时,Visual Studio 2010非常慢

时间:2012-05-24 03:32:56

标签: c# visual-studio-2010 visual-studio-debugging

在VS2010内部进行调试时,程序自然会比其他方式运行得慢很多。

但是,如果我更新ListBox的值,最近我的程序运行速度难以形成。 (其他控件也可能受到影响,我不确定......但ListBox是肯定的。)

在调试器外的一小段时间内发生的操作,例如向ListBox添加100个元素,在VS内部可能需要3到5分钟。

显然,这不是正常行为。

我不确定这是什么时候开始的,但它始终没有发生过。它开始发生在几个月前。也许当我安装服务包时?我不确定。

当我查看进程时,msvsmon.exe正在咀嚼CPU。

任何想法,如果某个地方我可能已经改变了哪个选项导致这个?我试图使用包含8,000个元素的ListBox来调试某些东西,而这完全是不可能的。

Windows 7 x64,4GB RAM,VS2010-SP1

3 个答案:

答案 0 :(得分:3)

  

是的,我可以在输出窗口中看到很多System.InvalidCastExceptions

这是导致速度减慢的原因,调试器在处理异常时会做很多工作。特别是您现在使用的远程调试器,因为您的项目的平台目标是AnyCPU,因此将通知消息添加到“输出”窗口并不便宜。

你不能忽视这个问题,它不仅仅是一个调试器工件。 Debug + Exceptions,勾选CLR Exceptions的Thrown框。调试器现在将在抛出异常时停止。您需要修复该代码。

答案 1 :(得分:1)

问题可能是VS2010处理断点的方式。看看这个链接:

两个有趣的注释:

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

...

  
      
  • 是的,调试64位程序时将使用msvsmon.exe。由于Visual Studio完全是32位,因此需要使用远程调试器   弥合鸿沟。 ...大力寻找并加载.pdb   文件可能会。或者意外进行混合模式调试   选项打开,所以调试器也看到所有非托管DLL   加载并为它们寻找符号。这些只是猜测当然。
  •   

答案 2 :(得分:0)

慢速的另一个原因 - 条件断点,因为需要在断点的每次命中时评估条件。断点有" false"对于长循环内的条件会显着减慢调试速度。