Visual Studio中的缓慢调试问题


87

在我的Visual Studio实例中,即使我只是在C#控制台应用程序中写了一行返回值,在按下F5它执行实际代码后,我也要花一分钟的时间(我的意思是,在此之后停止在单个return语句上所花费的时间紧迫F5 -我在main函数的return语句上设置了一个断点)。怎么了?有检查清单吗?

我正在使用Visual Studio 2008 VSTS版,并在Windows Server 2003 x64上进行调试。


2
只是为了确保...在尝试运行代码时,您有多少可用内存?VS是我的记忆中的记忆……
RSolberg,

1
你的硬件是什么?Visual Studio占用大量磁盘和CPU,因此在预算有限的计算机上将缺乏性能。
William Holroyd

1
VS无法正确处理超过2-3个条件断点...
Simon Buchan

我有4G内存,并且没有其他进程同时运行。我只是几次重启了机器,但都没有出现相同的症状。一周前我没有遇到过此类问题。还有其他想法吗?
2009年

2
它们全部列在Debug-> Windows-> Breakpoints(Ctrl-Alt-B)中。但是您会知道您是否做过任何事……
Simon Buchan

Answers:


149

您可能需要删除所有断点---请注意,您需要单击“删除所有断点”按钮(或使用Ctrl+ Shift+ F9),而不是只是删除它们一个接一个。如果Visual Studio破坏了您的解决方案设置,则后者将无法工作。为了使此功能正常运行,您可能需要先添加一个断点(聪明,是吗?)。

如果情况变得更糟,则可能需要删除.suo文件,然后让Visual Studio从头开始创建新文件。请注意,但是,您将丢失个人解决方案配置设置(仅针对该解决方案,不会丢失其他任何解决方案)。但是,您可能要暂时移动/重命名文件,直到确定是否是问题所在为止。这样,您可以随时将其移回。我看到一些在线资源也建议删除(移动/重新命名)该.ncb文件。


2
嗨,zweiterlinde。我发现应该处理网络的瓶颈。当我拔掉网线时,调试性能非常好。您对为什么有任何想法?以及如何进一步评估?
George2

删除一个14Mb的.suo文件对我有用:)它现在只有150Kb的微弱空间。从VS2010 Pro升级到Ultimate后出现问题
GreyCloud 2010年

+1。非常感谢,那行得通。我的VS 2010花了2分钟在工作站上启动了一个项目。嗯 什么错误....
阿尔森Zahray

我也删除了.suo文件,但是我在Visual Studio运行时做到了。当我重新启动Visual Studio时,它再次真正快速地连接了调试器,似乎它保留了我的大多数设置。
stiduck 2012年

+1非常感谢。因此,就我而言,删除suo文件非常适合我。
Dean Seo

26

我以前看过 尝试删除所有断点,然后设置所需的断点。打F5。现在更快吗?

我刚刚注意到您提到了设置.NET源调试功能。尝试禁用它。您与Microsoft的源服务器的网络连接可能很慢。也可以在菜单工具选项调试符号中禁用任何符号服务器连接。

也可以尝试在工具菜单→ 选项调试常规中禁用“启用属性评估和其他隐式函数调用” 。


1
在我的断点窗口中,我的Main函数的return语句上只有一个。还有其他清单吗?
2009年

1
添加了更多尝试的内容。希望能帮助到你。
m-sharp

我已经删除了Main函数的return语句上唯一的一个断点,但是启动和停止应用程序仍然很慢,大约需要1分钟。还有其他想法吗?
2009年

这是隔离您的问题的另一个想法。尝试断开网络电缆的连接,重新启动Visual Studio,然后在项目上单击F5。这会改变什么吗?
m-sharp

1
尝试禁用它,您与Microsoft的源服务器的网络连接可能很慢。也可以在“工具”>“选项”>“调试”>“符号”中禁用任何符号服务器连接-这对我
有用

19

或删除您的.suo文件,该文件可在您的解决方案(.sln)文件旁边找到。这解决了调试会话花费很长时间才能启动和停止的问题。


+1可以节省我的理智(并使我免于重新安装VS2010)。谢谢!
Chuck Dee

这是MSDN上的参考解决方案,以及:social.msdn.microsoft.com/Forums/vstudio/en-US/...
ecoe

确认这一点也适用于早期版本的2003.NET和2005。一个应用程序具有两个断点,并且运行良好。添加了更多断点...调试时VS中100%的CPU使用率和可怕的闪烁。关闭VS,删除.suo,重新打开,再次调试很快。
AlainD

这是我发现的解决方案,无论何时VS在调试方面变得太慢时,它始终有效
Graviton

或在删除之前先重命名.suo文件,以便可以恢复到之前的状态。
彼得·莫滕森

12

我有这个问题。在尝试了所有列出的建议并删除了所有Visual Studio扩展之后,我们最终发现以某种方式启用了IntelliTrace。禁用该功能可以修复所有问题。

如何:启用和禁用IntelliTrace


如果您有使用SharpDX的项目,它也解决了问题-它对我有用,现在图形性能恢复正常。
komorra 2015年

在使用SharpDX和Debug-Build的特殊情况下,我具有相同的效果,但是仅启用了DX调试。如果不需要,搜索“ DeviceCreationFlags.Debug”并禁用它
thewhiteambit

在VS2015中,我未选中“启用Intellitrace”,然后单击“确定”。后来发现您必须从“ Intellitrace和呼叫信息”更改为“仅Intelllitrace事件”;如果不这样做,请选中“启用Intellitrace”!
smirkingman

解决了问题!(不要相信MS注释:“本主题仅适用于Visual Studio 2010 Ultimate。”)。我有2017年免费版,它大大加快了调试速度!
marsh-wiggle's

VS 2017及更高版本中的IntelliTrace是仅限企业使用的功能,因此无法解决我的问题(因为我只有VS 2017 Pro版本)。
FoxDeploy

6

您是否设置了很多断点?这些确实可以减慢启动时间。每次将新模块加载到进程地址空间时,都需要检查它们是否有效。


我的用户模式代码中只有一个断点。但是我记得在使用Visual Studio中的源代码调试功能为.Net内部代码设置一些断点之前的一个星期。有没有办法检查所有断点,包括我设置的.Net内部断点?
2009年

没有,但仍然很慢,还有其他想法吗?
2009年

并非如此,看来您的硬件应该还可以,我尝试过的所有其他项目似乎都已被其他评论者打勾。在这一点上,我可能会尝试重新安装Visual Studio-也许安装过程有些混乱
1800信息

我重新安装到另一个目录,但仍然出现相同的症状。还有其他想法吗?
09年

6

转到菜单工具选项调试器符号,然后检查是否设置了公共符号或UNC网络路径。还要检查菜单工具*→ 选项调试器常规,以查看是否设置了源服务器。

所有这些因素都可能影响基于网络速度慢或服务器不可用的调试。5分钟的等待时间是网络超时。

如果未设置任何选项,请检查是否设置了_NT_SYMBOL_PATH环境变量。


谢谢,这是给我的。我偶尔会在“模块”窗口中加载1或2个符号文件,以通过UNC路径指向我们构建中的符号,或者以较少的频率指向不再存在的虚拟机。没有意识到它已将所有这些路径保存在Debugger / Symbols设置中。
brian 2012年

6

我的同事的Visual Studio响应速度非常慢,从字面上看,花了几分钟的时间来执行调试步骤。

根本原因是在Visual Studio运行时疯狂的防病毒程序(Threatfire)。终止进程会立即解决所有问题。


在禁用ESET Antivirus之前,我在工作中曾经历过可怕的Web调试经验。按下F5后,我的响应时间从2-3分钟缩短到2-3秒。
James Hulse 2012年

1
将ThreatFire暂停一会也对我有很大帮助-谢谢!(暂时关闭Avast!对您有所帮助,但效果不是很多。)
Jon Coombs 2013年

恶意软件字节是导致我出现问题的原因。退出它可以解决问题。
本·鲁宾

我也在使用Malwarebytes ...退出后,VisualStudio调试速度更快。调试启动时间是15秒之前,现在是2秒)。。谢谢!
BlueDev

5

在我的情况下,将调试符号“自动加载符号为”选项从“所有模块”更改为“仅指定的模块”解决了该问题。您可以从菜单工具选项调试符号更改此选项。


3

另一个原因加上... 如何找到问题

对我来说,它是ShowOtherThreadIpMarkers选项。值为1会使Visual Studio(2010)变得异常缓慢(每个调试步骤3-5秒。值为0时,它又快了)。

那是什么选择?我不知道。我无法通过Visual Studio用户界面找到它。我取消选中其中所有可能的调试选项,但没有任何效果。

因此,我转到了“ 导入/导出设置”并加载了以前保存的旧设置,以便及时将其倒退,直到Visual Studio再次变快为止,然后再比较vssettings文件...等等。

我想说明一下,如果您在调试模式下在断点处停止时加载设置,则这些设置将立即生效。您不必停止调试器并重新启动。


+1谢谢,这也是我在VS2015中使用C#Web应用程序时遇到的问题。我在调试时禁用了工具栏中的“在源代码中显示线程”选项,问题消失了。如果该选项在工具栏中不可用,则可以通过右键单击“线程”窗口内的任何线程来找到。
Groo

2

特拉维斯(Travis)链接到ScottGu的博客中说:“我最近听说的另一个性能难题是一些人报告说使用Google工具栏加载项时遇到的一个问题。由于某些原因,这有时会导致附加Visual Studio时出现长时间延迟Studio调试器连接到浏览器。如果您在加载Web应用程序时遇到长时间延迟,并且安装了Google工具栏(或其他工具栏),则可能要尝试将其卸载以查看是否是问题的原因。”


您是否安装了Google工具栏?甚至说不对以后的读者也有帮助。
Cat Zimmermann

我打开IE并没有显示任何工具栏,这是否意味着我没有安装工具栏并且不会影响Visual Studio?:-)
George2,2009年

2
哇。我以为这没有任何意义,但我只是卸载了我的机器,然后回到了可用模式
orellabac 2012年

1
另一个被指责的插件是LastPass。这仅仅是IE的问题,还是任何浏览器中的插件都能影响事情吗?
丹妮丝·斯基德莫尔

1
@DeniseSkidmore您好极了,希望我能投票一次以上。所有其他解决方案都无济于事...然后,我阅读了您的评论,禁用了LastPass IE加载项,然后突然又很快了。我通过重新启用外接程序来确认这是问题所在,并且速度变慢了。谢谢!!!!
Lews Therin's

2

对我来说,在调试器下运行比在不调试的情况下运行慢大约10倍。

在尝试了这里建议的每个解决方案之后,我仔细检查了每个调试器设置并启用/禁用它是否有所作为。

对我而言,事实证明,在调试设置中在模块负载上禁用Suppress JIT优化可以大大改善性能。


1

确保您没有与服务器不再存在的过时网络映射(网络超时将杀死您)。或使用诸如Process Monitor之类的工具查看网络(或其他文件错误)是否长时间处于阻塞状态。


Process Monitor是一个很酷的工具!:-)但是可以使用Process Monitor中的哪个选项查看“如果网络(或其他文件错误)似乎长时间处于阻塞状态”?
2009年

我会寻找诸如尝试打开文件时出错或操作需要多长时间的事情(不要忘了可以在“选项/选择列”中选择的“ Duration”之类的数据项可能不会出现)。 。使用过滤器和突出显示以发挥自己的优势。
Michael Burr

迈克尔·伯尔(Michael Burr),您好:在“进程监视器”中,您是指监视VSTS进程本身还是监视计算机上的所有进程?
George2

我绝对会从VSTS(devenv.exe)开始,否则您会被几乎毫无用处的信息所淹没。
Michael Burr

1
您将要使用“过程监视器”而不是“过程资源管理器”。请参阅technet.microsoft.com/zh-cn/sysinternals/bb896645.aspx。这两个实用程序具有不同的功能。Procmon将跟踪文件和注册表操作。Procexp是一个方便的实用程序,但不提供该类型的跟踪。
Michael Burr,

1

您是否正在使用SymbolsServer下载Windows DLL文件的符号?

如果是这样,请禁用它,因为这可能需要一些时间,但是我不希望这会导致基本控制台应用程序中的长时间延迟。

菜单工具选项调试符号


内容在工具>选项>调试>符号中为空。还有其他想法吗?
2009年

1

我知道这是一个古老的话题,但值得一提的是...

我发现,如果长时间打开单独的Internet Explorer窗口,则可能需要一分钟才能开始调试。关闭所有Internet Explorer窗口,调试将立即开始。


1

就我而言,Google工具栏正在减慢调试速度。

gplus_notifications_gadget.html一直在继续进行调试器的工作。我希望保留Google工具栏,因为我经常使用它,所以我只是禁用了Google+通知按钮(配置文件按钮旁边的小按钮)。现在很高兴。


1

在Visual Studio 2010中,我遇到了同样的问题,代码的运行速度非常慢(3到10秒之间)。但是,上述设置修改均无济于事。

我终于找到最终的解决方案,这将在以上所有的岗位问题开展工作:重置所有设置,如描述在这里(基本上是菜单 工具导入和导出设置将所有设置,以保存现有设置到一个文件中(用于恢复))。

您可能首先要保存设置的特定部分。例如,我首先保存我的颜色主题(类似于Solarized),然后在全局重置后将其恢复。


1

对我而言,影响性能的设置(Windows 8甚至挂起,但鼠标移动除外)是取消选中 菜单选项调试常规中的“当一个进程中断时中断所有进程”


1

造成Visual Studio调试速度缓慢的另一个原因...

很久以前,我启用FusionLog了查看导致程序集绑定问题的原因。

确保在使用后禁用它。为什么?因为启用后它将大量日志记录数据写入磁盘。

这是FusionLogWindow注册表(regedit.exe)上的键:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Fusion

改变ForceLogLogImmersiveLogResourseBindings从1个值(启用)为0(禁止)。


那就是我发生的事情。您也可以通过以下GUI禁用Fusion Log:hanselman.com/blog/…–
Denise Skidmore

您可以查看这是否是您的问题,在运行Process Monitor时,将看到对Fusion Log文件的所有访问。
丹妮丝·斯基德莫尔

0

我也有这个问题,但与我的情况下的断点无关。这是我在任务窗口中添加的代码快捷方式:

http://www.customsoftwareframeworks.com/blog/longwaittimetoinsertoraddalineoftextbuginvisualstudio--tasklistwindow--仅在添加和删除线时

我敢肯定,还有其他方式可以看到这样的问题,但是某个地方的错误会导致我遇到这个问题...删除所有选项可以解决此问题,但是那是我不想解决的问题做。所以,我调试了它,并在我的博客中写了它……您的问题听起来像我的。


链接断开:“您要查找的资源已被删除,名称已更改或暂时不可用。”
彼得·莫滕森

0

对我有用的是确保没有条件断点。除此之外,我仅通过重新启动Visual Studio并一次仅打开一个Visual Studio实例就成功解决了缓慢的调试问题。


0

我遇到了类似的问题,其他指南似乎都没有帮助。我重新启动无济于事。我已经删除了所有断点,删除了.suo文件,检查了是否没有从外部源加载符号,并检查了应用程序中不存在不可用的路径。

然后,我想清洗溶液。我在输出窗口中注意到,C#IntelliSense清洁时报告了一个问题:

从“ {B0C3592F-F0D1-4B79-BE20-3AD610B07C23}”读取元数据时出现问题(“系统找不到指定的文件。”)。重新加载解决方案之前,IntelliSense可能无法正常工作。

在这种情况下,一旦真正发现错误消息,它就会告诉您确切的解决方法。(在错误文本上做得很好,在可发现性上做得不好!)我卸载了解决方案的项目,然后重新加载了它们。这样我就能够成功运行干净的解决方案。它奏效了,调试器也做了。


0

关闭“自动”窗口可以改善Visual Studio 2008中针对大型本机C ++解决方案的调试。

隐藏它是行不通的。它需要关闭。


0

我经历了同样的速度下降,并且断开网络连接对我来说解决了其他一些评论和答案所提出的问题(但是,这当然不是理想的解决方法)。

就我而言,这一简单更改解决了我的解决方案:在调试选项卡上的项目属性中,我禁用了“启用Visual Studio托管进程”(我正在运行Visual Studio 2010)。


-9

获得更多的内存和更快的高清。更多细节在这里


1
我不认为这是硬件问题,因为我的硬件是4G内存+ 2 CPU(2.33G),够了吗?顺便说一句:一周前我没有受到这个困扰,所以我认为应该是一些配置问题?
2009年

2
+1有用的建议,不敢相信人们会对此表示反对。尽管删除.suo文件可以提供10倍的帮助。
Andomar 2011年

1
OP甚至没有告诉他们他们的规格是什么。如果您向我提供建议,那么您将建议我获得大于32Gb Ram的内存并且比我已经快的固态硬盘更快。
瓦拉马斯2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.