Visual Studio调试加载符号时非常缓慢

46

我有一个问题,它与 Visual Studio 调试/加载非常缓慢 的问题几乎相同,但我还没有找到解决此类问题的方法。

我已经尝试了那个问题中描述的所有方法,但仍然第一次加载符号非常缓慢。

与其他问题类似,在启动 MVC 项目时,输出面板中会出现几行内容,其内容类似于:

'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\02ba097f\ab73cbf7\App_Web__headerusermenu.cshtml.ee708ea.myhgafpb.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\02ba097f\ab73cbf7\App_Web__layoutcmsbase.cshtml.ce72eb6d.ovoanhe-.dll', Symbols loaded.
'iisexpress.exe' (Managed (v4.0.30319)): Loaded 'C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\02ba097f\ab73cbf7\App_Web__notificationmessage.cshtml.5346933.9aei7ems.dll', Symbols loaded.

每个这样的条目大约需要300-500毫秒,这些条目将为我们在项目中拥有的所有Partial Views执行,这些视图相当可观。

我尝试了其他问题中提供的解决方案,但仍然没有获得快速响应时间。

这些是我们进行的一些测试:

使用IIS Express

  • 加载网站最初需要大约2分钟
  • 停止网站并重新启动需要大约1分45秒
  • 一旦网站正在运行,我按下“Load All Symbols”(工具>选项>调试>符号>加载所有符号),然后停止项目并再次运行,这需要更少的时间,大约25秒。不过,“Load All Symbols”按钮在项目未运行时被禁用,因此第一次需要等待项目加载完成才能按“Load All Symbols”按钮。

使用Visual Studio Development Server

  • 最初启动,需要大约50秒
  • 停止项目并重新启动,需要大约20秒
  • 点击“Load All Symbols”,停止项目并重新启动需要大约15秒

这变得非常令人沮丧,因为它需要非常长的时间来加载项目。

除了在问题Visual Studio debugging/loading very slow中提到的解决方案之外,还有其他可能有帮助的解决方案吗?


2
我在另一个问题中尝试了几乎所有的方法,但加载IISExpress符号仍然需要很长时间。这可能更像是症状而不是原因,但我注意到几乎所有我的源符号请求都是404,所以缓存解决方案没有帮助。同样,关闭所有符号服务器并仅加载所需符号也无法解决我的问题。对我有效的方法是“删除所有断点”。 - cirrus
我尝试了所有的方法,甚至使用了“删除所有断点”功能,但仍然无法解决这个问题。我无法弄清楚为什么会出现这种情况,这让人非常沮丧,因为每次加载项目都需要浪费很多时间! - Mark Cassar
我认为这可能有很多不同的原因。我猜你只需要不断尝试,直到找到那个神奇的调整。你尝试过单独运行IISExpress并附加调试器吗?有什么不同吗? - cirrus
当调试变得异常缓慢时,我尝试的一些方法包括:是否开启了Intellitrace?/更改几个调试选项/有时将本地主机名解析为DNS需要1秒钟(不知道为什么),因此首先获取第一页需要这一秒钟。 - citykid
4
我的情况是由于启用了FusionLog。如果你已经启用了FusionLog,请尝试禁用它。 - rkawano
显示剩余2条评论
9个回答

7

尝试以下任何一种...

  1. 启用“仅限我的代码”
    转到“工具”>“选项”>“调试”>“常规”
    勾选“启用仅限我的代码”
    启用“仅限我的代码”


  2. 本地缓存符号文件
    转到“工具”>“选项”>“调试”>“符号文件” 浏览到本地目录(确保不在网络共享中) 单击“加载所有符号文件”或运行项目以填充缓存

    本地缓存符号文件


  3. 移除远程符号服务器

    当您选择远程符号服务器时,Visual Studio 会给您以下警告

    由于延迟、带宽或服务器可用性等原因,远程符号库的性能可能会有所变化。启用此服务器时,通过选择仅加载指定模块的选项,可以提高调试性能。

    加载符号缓存后,取消选择远程符号服务器

    转到“工具”>“选项”>“调试”>“符号文件” 取消选择“Microsoft 符号服务器”,以防止 Visual Studio 远程查询 Microsoft 服务器。 取消选择 Microsoft 符号服务器

更多阅读

Stack Overflow

MS Docs


1
取消选择“Microsoft符号服务器”是一个好主意。人们会假设付费版本的VS会定期检查(并在会话外更新)。 - Laurie Stearn

4
在我的情况中,我在VS中打开了一个不属于当前解决方案的文件(它是一个我用断点标记为快速参考的XML文件)。当我移除这些特定的断点时,问题解决了。

不好意思,这并不是我的问题,也不幸地出现在我的情况中。 - Mark Cassar
刚刚发生了这种情况。在EDMX xml中有一个禁用的断点。 - Eugene S.

2

我在本地网络共享上托管我的项目时遇到了同样的问题。将它移动到我的本地系统后,符号加载时间减少了90%!


我的文件不在本地网络共享上,而是在本地文件系统中,问题仍然存在。 - Mark Cassar

2
根据rkawano的评论 - 关闭Fusion Log有时可以修复这个问题(对我有用)。在阅读了以下文章之后article,我启用了融合日志,然后就忘记了。过了一段时间,我开始在Visual Studio 2013中遇到显著的减速。症状是VS 2013变得不响应,特别是在结束调试会话时。它还将在加载项目或停止调试器时显示符号加载对话框(通常不会显示)。

1
我遇到了同样的加载缓慢问题,但这只困扰着一个沙盒解决方案。非常相似的暂存和生产/复制解决方案都工作得很好。所以所有这些环境调整的建议都无法解释它(当然我还是试过了)。然后我比较了.csproj文件,并发现了一个可疑的差异。纠正后,一切恢复正常。

1

您尝试过绕过IIS Express,从本地IIS服务器运行应用程序吗?URL应该类似于:localhost/{yourprojectname}。第一次访问应用程序时可能仍然会加载缓慢,但之后应该会非常快,因为Visual Studio不会在每次运行时启动应用程序。从本地IIS运行应用程序还可以让您在启动调试器时保持Firefox打开,而不是每次打开和关闭IE。


主要问题在于第一次加载项目并开始进行符号加载。一旦项目正在运行且符号已成功加载,那么加载时间就不会那么长了。 - Mark Cassar

1

前往工具>选项>环境>插件安全性 取消选中"允许加载插件组件" 重新启动Visual Studio


1
我的VS2013在调试时由于符号加载缓慢而非常慢。我注意到,在符号加载缓慢的过程中,我的网络使用率非常高,尽管我的应用程序没有访问它。
作为一个实验,我拔掉了以太网电缆,调试非常快。我的符号DownstreamStore位于C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE\DownstreamStore。在工具\调试\符号下,我清除了缓存,当我试图退出时,收到了一个需要管理员权限才能继续的消息。
可能是权限问题(自2013年以来可能已经改变)导致符号从互联网加载。我将目录更改为闪存驱动器上的另一个非管理位置并进行了调试。第一次很慢,但之后就非常快了。

1
我不知道是谁给你有价值的评论点了踩 - 更改目录并重新建立缓存内容解决了我的问题。因此,我点赞来抵消那个踩。 - John Ranger

0

我尝试了所有的解决方案,但似乎都不起作用。我打开了我的符号设置工具 > 选项 > 调试 > 符号,发现在此目录中缓存符号设置为另一个用户的目录,例如C:\Users\<not my name>\AppData\Local\Temp\SymbolCache

然后,我清除了该设置字符串,使其为空,并删除了任何其他配置的pdb位置。然后按OK。

enter image description here

然后我开始构建并允许 VS 解析这些符号(20 秒)。然后我停止并重新启动,并且在不加载符号的情况下启动。

我猜想在某个地方我导入了另一个用户的设置。


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