【问题标题】:Debugging sometimes very slow调试有时很慢
【发布时间】:2020-11-17 23:46:29
【问题描述】:

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

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

【问题讨论】:

  • 问题像泥土一样古老,但仍然相关,因为它刚刚发生在我身上。就我而言,答案只是确保“调用堆栈”窗口未处于活动状态。它通常与“Auto”、“Locals”和“Watch”堆叠在一起,因此只需单击其中一个即可将“Call Stack”置于后台。
  • wrt @JPNotADragon 的回答:停用调用堆栈窗口(即切换到另一个窗口)也神奇地解决了我在调试(步进和检查变量)时的性能问题。更重要的是,重新激活调用堆栈窗口后性能问题没有返回。

标签: visual-studio debugging


【解决方案1】:

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

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

赛拉斯

【讨论】:

    【解决方案2】:

    尝试关闭调试器选项中的“启用属性评估...”设置,它应该会使调试更快(阅读更多:Fix: Make Debugging Faster with Visual Studio):


    (来源:flickr.com

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        “反汇编”选项卡(在后台打开)会使调试每步减慢 1-2 秒。 (不确定是否总是这样)。

        【讨论】:

        • 这是我的情况,关闭属性评估会有所帮助,但只需关闭反汇编窗口就可以加快调试速度(从大约 3 秒一步下降到几乎瞬间)......谢谢!
        【解决方案5】:

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

        这是由“在源代码中显示线程”功能引起的。

        详情请看以下链接:

        Code Project: Show threads in source

        Visual Studio Single Step Performance Fixes

        禁用此功能后,问题已得到修复。

        【讨论】:

          【解决方案6】:

          有很多事情会导致 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/

          【讨论】:

            【解决方案7】:

            接受的答案几乎没有相关性或帮助!

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

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

            【讨论】:

            • 这绝对是正确的答案。我刚从每步 30 秒的即时踏步开始。
            【解决方案8】:

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

            【讨论】:

              【解决方案9】:

              是的,Visual Studio 有时调试速度非常慢。您可以采取许多额外的步骤(除了关闭“启用属性评估”设置)来加快进程。本质上,它需要大量的 RAM,因此执行一些操作来释放它会有所帮助。

              1. 进入 Visual Studio 的首选项。查找与动画菜单等相关的所有选项。这些有时会变得很密集,虽然不是专门针对调试的,因为您通常不会打开菜单,但它似乎确实有帮助。

              2. 在计算机本身上,如果您右键单击我的计算机。转到高级选项卡并在性能下。如果您调整计算机以获得最佳性能,它将加快速度。它会清除您计算机上的任何漂亮样式,但会释放一些您想要的内存。

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

              【讨论】:

              • @kaze 我已经分析了许多 Visual Studio 的减速,但我从未发现这些是一个重要因素。 1) 菜单在调试过程中不应有明显的动画效果,尤其是当您使用键盘快捷键单步执行时。 2) 任何相当强大的机器(足够的内存、CPU、合理的 GPU)都可以处理默认的性能设置。 3) 最后一条提示仅适用于您的计算机没有足够内存的情况。在源代码中显示线程和过多的断点可能会导致 Visual Studio 运行速度变慢几个数量级。暗示这些的答案更有用。
              【解决方案10】:

              Here's a link to some guidance on Mike Stahl's MSDN blog,关于解决调试器减速

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

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                  【解决方案12】:

                  “在源代码中显示线程”建议没有帮助。

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

                  我的最初是未选中的,但在更改它后,在 VS2008 中单步执行代码现在恢复正常速度。

                  【讨论】:

                    【解决方案13】:

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

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

                    Visual Studio 2015(版本 14)

                    【讨论】:

                      【解决方案14】:

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

                      另一半是由于加载了比我需要的更多的符号(选项>调试>符号)。有一次我需要定义符号位置,但我不再需要了,所以我可以取消选中它们并单击“空符号缓存”。如果您列出了 _NT_SYMBOL_PATH,则表示您已定义此环境设置,Visual Studio 不会让您取消选中它。您需要删除该设置。更多关于符号设置 (https://blogs.msdn.microsoft.com/visualstudioalm/2015/01/05/understanding-symbol-files-and-visual-studios-symbol-settings/)

                      【讨论】:

                        【解决方案15】:

                        我遇到了同样的问题,我删除了我所有的变量表,这很有帮助!因为调试过程中的每一步,都会重新加载所有的watch,需要时间……

                        解决方案:从“调试”菜单中,选择 Windows,然后选择 Watch,然后单击 Watch1、Watch2、Watch3 或 Watch4。将出现菜单并右键单击它们以清除它们。

                        【讨论】:

                          【解决方案16】:

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

                          就我而言,在全公司范围内推出新的病毒扫描程序后,调试变得非常缓慢。过了一会儿,我们发现msvsmon.exe的实时扫描是罪魁祸首。

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

                          【讨论】:

                            【解决方案17】:

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

                            【讨论】:

                            • 感谢您的回答,但您能否提供一些对此解决方案的更多见解?为什么会解决问题,如何解决问题等。
                            猜你喜欢
                            • 1970-01-01
                            • 1970-01-01
                            • 1970-01-01
                            • 2014-05-13
                            • 2015-06-16
                            • 2021-01-04
                            • 2023-03-17
                            • 1970-01-01
                            • 1970-01-01
                            相关资源
                            最近更新 更多