关于Visual Studio:调试有时非常慢

Debugging sometimes very slow

我在正常的中型解决方案中使用VS2008。

有时,调试步骤变得很慢。 每个"步骤"(F10 / F11)的每个文件选项卡上都会呈现一个挂锁,并且每个步骤最多可能需要两秒钟。 这使得调试非常烦人和缓慢。 有没有人看过这个问题?


我在VS 2008中注意到,如果在调试工具栏中选择了"在源中显示线程"按钮,则步进速度至少会慢10倍。

我还注意到,如果您的应用程序需要很长时间才能在调试模式下启动,则只需在"调试"菜单下"删除所有断点"即可解决此问题。即使我当时只设置了几个断点,这也为我解决了一个烦人的问题。

西拉斯


尝试关闭"调试器"选项中的"启用属性评估..."设置,它应该使调试更快(阅读更多:修复:使用Visual Studio加快调试速度):

alt text
(来源:flickr.com)


在Visual Studio中禁用源中的显示线程。然后关闭呼叫堆栈跟踪窗口。

Disable Show Threads In Source. after Press debug Button


除了上面提到的所有问题。

"反汇编"选项卡(在后台打开)每步将调试速度降低1-2秒。
(不确定是否总是这样发生)。


我遇到了同样的问题,尤其是在调试具有多个线程的应用程序时。

这是由"显示源中的线程"功能引起的。

有关详细信息,请参见以下链接:

代码项目:显示源代码中的线程

Visual Studio单步性能修复

禁用此功能后,问题已解决。


有很多事情会导致Visual Studio变慢。过多的断点和"在源代码中显示线程"可能是最常见的两个,但是您不在乎最常见的是什么,而是在担心使Visual Studio变慢的原因。

因此,如果删除断点并关闭"在源代码中显示线程"不起作用,则需要配置Visual Studio。这样一来,您就可以找到针对自己情况的性能问题。有关如何执行此操作的说明(已解决了两个单独的Visual Studio性能问题):

Visual Studio Single Step Performance Fixes

此处详细介绍了其他人的代码中有关性能问题的更多调查:

http://randomascii.wordpress.com/category/investigative-reporting/


接受的答案几乎没有意义或没有帮助!

这些是可能使调试极其缓慢的一些问题:

  • "显示源代码中的线程"(请参阅??screensht)。如果您有大量使用多线程的应用程序,则启用此选项将无法调试。此选项的作用是,如果其他线程也执行相同的代码,它将尝试显示在其他线程的相同文件执行位置。因此,如果您有很多线程,调试器需要检查它们所位于的所有线程。如果您有许多线程,这可能会使调试器的每一步都非常慢。
    enter image description here
  • 许多条件甚至常规断点。尤其是在头文件的某些内联函数中。
  • 调用堆栈中启用的"显示外部代码"也会使其变慢。


如果启用了"在源中显示线程",则将其禁用;如果打开了"并行堆栈线程","任务"和" GPU线程"窗口,则将其关闭。这些导致调试器遍历进程中每个线程的调用堆栈。

enter image description here


这是迈克·斯塔尔(Mike Stahl)的MSDN博客上有关解决调试器速度降低问题的一些指南的链接

我遇到了这个问题,因为应用程序热点中的条件断点破坏了我的调试性能。个人BKM:在您过夜之前解决潜在的性能问题,因为您可能早上都不记得它们。


"在源中显示线程"建议没有帮助。

但是我通过启用Tools:Options:Debugging:General->"要求源文件与原始版本完全匹配"来修复它。

最初没有对我的地雷进行检查,但是在更改了地雷之后,VS2008中的代码逐步恢复到正常速度。


帮助我的是禁用诊断工具。

工具/选项/调试/常规/启用诊断工具

Visual Studio 2015(版本14)


启用" .NET Framework源代码步进"后,我遇到了此问题。关闭此功能后,步进速度会加快很多。特别是,重新启用"启用我的代码"(选项>调试>常规)可以消除大约一半的延迟。

另一半是由于加载了比我所需更多的符号(选项>调试>符号)引起的。某一时刻,我需要定义符号位置,但现在不再需要了,因此我可以取消选中所有位置,然后单击"空符号缓存"。如果列出了_NT_SYMBOL_PATH,则意味着您已定义此环境设置,Visual Studio不允许您取消选中它。您需要删除设置。有关符号设置的更多信息(https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/)


我遇到了同样的问题,我删除了所有的可变手表,这很有帮助!因为调试期间的每个步骤都会重新加载所有手表,所以需要时间...

解决方案:从"调试"菜单中,选择Windows,然后选择"监视",然后单击"监视1","监视2","监视3"或"监视4"。将显示菜单,然后右键单击它们以清除所有菜单。


如果您具有病毒扫描程序(启用了实时扫描),请检查C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE
emote Debugger\x64\msvsmon.exe
*是否从扫描中排除。

以我为例,在公司范围内推出新的病毒扫描程序后,调试变得非常缓慢。一段时间后,我们发现实时扫描msvsmon.exe是罪魁祸首。

*根据安装文件夹修改路径


单步缓慢的另一个原因是使用Intellitrace(仅在Ultimate中可用)。要关闭它,请使用工具|选项| IntelliTrace。取消选中启用IntelliTrace。


清除监视窗口中的所有条目。


是的,Visual Studio有时调试非常慢。您可以采取许多其他步骤(除了关闭"启用属性评估"设置之外)来加快此过程。本质上,它需要大量的RAM,因此执行一些操作以释放该内存将有所帮助。

  • 进入Visual Studio的首选项。查找与动画菜单等有关的所有选项。这些有时会变得很密集,尽管您通常不打开菜单而不是专门用于调试,但它确实有所帮助。

  • 在计算机本身上,如果右键单击我的计算机。转到高级标签,然后在效果下。如果您调整计算机以获得最佳性能,它将加快处理速度。它消除了计算机上任何漂亮的样式,但可以释放您想要的一些内存。

  • 关闭所有不必要的程序。您可以为Visual Studio提供的内存越多,它将表现得越好。