调试有时非常缓慢

13

我正在使用VS2008,在一个普通的中等规模的解决方案中。

有时,调试步骤变得非常缓慢。每个文件选项卡上都会出现一个挂锁,对于每个“步骤”(F10/F11),每一步可能需要长达两秒钟的时间。这使得调试变得非常烦人和缓慢。有没有人遇到过这个问题?


虽然这个问题古老但仍然很有价值,因为我刚遇到了它。在我的情况下,答案很简单:确保“调用堆栈”窗口没有激活。通常它与“自动”,“本地变量”和“监视”一起堆叠,所以只需单击其中一个将“调用堆栈”放到后台即可。 - JPNotADragon
关于@JPNotADragon的回答:关闭调用堆栈窗口(即切换到另一个窗口)也神奇地解决了我的性能问题,包括调试时的步进和变量检查。更重要的是,在重新激活调用堆栈窗口后,性能问题并没有再次出现。 - bvgheluwe
17个回答

21

我注意到在VS 2008中,如果你在调试工具栏中选择了“在源代码中显示线程”按钮,那么单步执行可能会慢至少10倍。

我还注意到,如果你的应用程序在调试模式下启动时间很长,那么只需在“调试”菜单下选择“删除所有断点”即可解决这个问题。尽管当时我只设置了几个断点,但这解决了一个令人烦恼的问题。

Silas


12

7

禁用Visual Studio中源代码中的“显示线程”,并关闭调用堆栈跟踪窗口。

在按下调试按钮后禁用显示线程


5
除了上述提到的所有问题外。
“反汇编”选项卡(在后台打开)会使调试每步减慢1-2秒。 (不确定是否总是这样)。

这是我的情况,关闭属性评估有所帮助,但只需关闭反汇编窗口即可使调试速度更快(从大约3秒一步降至几乎瞬间)...谢谢! - Martin

3

1
有很多原因会导致Visual Studio运行缓慢。过多的断点和在源代码中显示线程可能是最常见的两个原因,但你并不关心最常见的原因,你关心的是什么让Visual Studio对*你*而言变得缓慢。
因此,如果删除断点和关闭在源代码中显示线程无效,那么你需要对Visual Studio进行性能分析。这可以帮助你找到独特于你的情况的性能问题。如何执行此操作的说明(解决了两个不同的Visual Studio性能问题)可在此处找到:

http://randomascii.wordpress.com/2013/03/03/visual-studio-single-step-performance-fixes/

更多关于他人代码性能问题的调查详见此处:

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


1

被接受的答案几乎没有相关或有用的信息!

以下是可能导致调试非常缓慢的一些问题:

  • "在源代码中显示线程"(见截图)。如果您有一个非常多线程的应用程序,则无法启用此选项进行调试。此选项的作用是尝试显示其他线程的执行位置,如果它们也执行相同的代码,则在同一文件中。因此,如果您有许多线程,则调试器需要检查所有线程的位置。如果您有许多线程,则每个步骤都可能使调试器极其缓慢。 enter image description here
  • 许多条件或甚至是常规断点。特别是如果这些是在某个头文件的一些内联函数中。
  • 在调用堆栈中启用“显示外部代码”也会使其变慢。

这肯定是正确的答案。我刚刚从每步花费30秒的速度瞬间提升了。 - dajaffe

1
如果“显示源中的线程”已启用,则禁用它,并关闭并行堆栈线程、任务和GPU线程窗口,因为这些会导致调试器遍历进程中每个线程的调用堆栈。

enter image description here


0

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

另一半延迟是由于加载了比我需要的更多的符号(选项>调试>符号)。有一段时间我需要定义符号位置,但现在不需要了,所以我能够取消所有勾选并单击“清空符号缓存”。如果你列出了_NTSYMBOL_PATH,那么意味着你已经定义了这个环境设置,Visual Studio不会让你取消勾选它。你需要删除该设置。更多关于符号设置的信息(https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/


0

如果您有一个病毒扫描程序(启用实时扫描),请检查C:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\Remote Debugger\x64\msvsmon.exe*是否被排除在扫描范围之外。

在我的情况下,在公司推出新的病毒扫描程序后,调试变得非常缓慢。过了一段时间,我们发现msvsmon.exe的实时扫描是罪魁祸首。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接