0

在 VS2010 中进行调试时,程序的运行速度自然会比其他程序慢很多。

但是,如果我更新 ListBox 的值,最近我的程序运行速度非常慢。(其他控件也可能会受到影响,我不确定……但 ListBox 是肯定的)。

在调试器之外在几分之一秒内发生的操作,例如向 ListBox 添加 100 个元素,在 VS 中可能需要 3 到 5 分钟。

显然,这不是正常行为。

我不确定这从何时开始,但并非总是如此。它开始发生在几个月前。也许当我安装服务包时?我不确定。

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

如果在某个地方我可能已经改变了导致这种情况的某些选项,有什么想法吗?我正在尝试使用包含 8,000 个元素的 ListBox 来调试某些东西,这完全是不可能的。

Windows 7 x64、4GB 内存、VS2010-SP1

4

3 回答 3

3

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

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

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

于 2012-05-24T03:55:47.410 回答
1

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

两个有趣的注释:

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

...

  • 是的,调试 64 位程序时将使用 msvsmon.exe。由于 Visual Studio 完全是 32 位的,因此需要远程调试器来弥补差距。... 可能会努力查找和加载 .pdb 文件。或者意外打开了混合模式调试选项,因此调试器还可以看到所有非托管 DLL 加载并为它们查找符号。这些当然只是猜测。
于 2012-05-24T03:47:09.300 回答
0

另一个导致速度变慢的原因 - 条件断点,因为需要在每次命中断点时评估条件。在长循环中设置条件为“假”的断点会显着减慢调试速度。

于 2012-05-24T03:53:44.507 回答