在VS2010内部进行调试时,程序自然会比其他方式运行得慢很多。
但是,如果我更新ListBox的值,最近我的程序运行速度难以形成。 (其他控件也可能受到影响,我不确定......但ListBox是肯定的。)
在调试器外的一小段时间内发生的操作,例如向ListBox添加100个元素,在VS内部可能需要3到5分钟。
显然,这不是正常行为。
我不确定这是什么时候开始的,但它始终没有发生过。它开始发生在几个月前。也许当我安装服务包时?我不确定。
当我查看进程时,msvsmon.exe正在咀嚼CPU。
任何想法,如果某个地方我可能已经改变了哪个选项导致这个?我试图使用包含8,000个元素的ListBox来调试某些东西,而这完全是不可能的。
Windows 7 x64,4GB RAM,VS2010-SP1
答案 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"对于长循环内的条件会显着减慢调试速度。