繁体   English   中英

加载符号时,Visual Studio 调试速度很慢

[英]Visual Studio debugging painfully slow when loading symbols

我有一个问题,它实际上类似于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 毫秒,并且这些条目是为我们在项目中拥有的所有部分视图执行的,这是相当可观的。

我已经尝试了另一个问题中的解决方案,但仍然没有得到任何快速的响应时间。

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

使用 IIS Express

  • 加载网站最初大约需要 2 分钟
  • 停止网站并重新启动大约需要 1 分 45 秒
  • 网站运行后,我按加载所有符号(工具 > 选项 > 调试 > 符号 > 加载所有符号),然后停止项目并再次运行,它花费的时间要少得多,大约 25 秒。 尽管如此,当项目没有运行时,加载所有符号按钮被禁用,所以这是第一次,我需要等到项目加载后才能按加载所有符号

使用 Visual Studio 开发服务器

  • 最初开始,大约需要 50 秒
  • 停止项目并重新开始,大约需要 20 秒
  • 单击加载所有符号,停止项目并重新启动大约需要 15 秒

这变得非常令人沮丧,因为第一次加载项目需要很长时间。

除了问题Visual Studio 调试/加载速度非常慢中提到的那些可能有帮助的解决方案之外,还有其他任何可能的解决方案吗?

就我而言,我在 VS 中打开了一个文件,该文件不是我当前解决方案的一部分(它碰巧是一个 XML 文件,我已标记了断点以供快速参考)。 当我删除那些特定的断点时,问题就解决了。

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

根据 rkawano 的评论 - 关闭 Fusion Log 有时可以解决这个问题(对我来说确实如此)。 我在阅读以下文章后启用了融合日志,然后忘记了它。 一段时间后,我开始遇到 Visual Studio 2013 的显着减速。症状是 VS 2013 变得无响应,尤其是在结束调试会话时。 它还会在加载项目或停止调试器时显示符号加载对话框(这些通常不会显示)。

尝试以下任何一种...

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

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

    缓存符号

  3. 删除远程符号服务器

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

    远程符号存储的性能可能因延迟、带宽或服务器的可用性而异。 启用此服务器时,可以通过选择仅加载指定模块的选项来提高调试性能

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

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

进一步阅读

堆栈溢出

微软文档

您是否尝试过绕过 IIS express 并从本地 IIS 服务器运行应用程序? url 看起来像这样:localhost/{yourprojectname}。 第一次点击应用程序时,您可能仍然会遇到加载缓慢的情况,但之后它应该会保持非常快速,因为 Visual Studio 不会在您每次想要运行应用程序时都启动它。 从本地 IIS 运行应用程序还允许您在启动调试器时保持 Firefox 打开,而不是每次都打开和关闭 IE。

转到工具>选项>环境>添加安全性取消选中“允许添加组件加载”重新启动Visual Studio

我遇到了同样的加载缓慢问题,但它只困扰着一个沙箱解决方案。 非常相似的登台和生产/复制解决方案工作得很好。 所以人们推荐的所有这些环境调整都无法解释它(当然我还是尝试了它们。)然后我比较了 .csproj 文件,发现了一个可疑的外观差异。 改正之后,一切又恢复了正常。

我尝试了所有解决方案,但似乎没有任何效果。 我打开我的符号设置工具 > 选项 > 调试 > 符号,发现Cache Symbols in this directoryCache Symbols in this directory设置为另一个用户的目录,例如C:\\Users\\<not my name>\\AppData\\Local\\Temp\\SymbolCache

然后我通过将其设置为空来清除设置字符串,并删除配置的任何其他 pdb 位置。 然后按确定。

在此处输入图片说明

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

我假设我从另一个用户导入了设置。

由于加载符号缓慢,我的 VS2013 在调试时非常缓慢。 我注意到,在缓慢加载期间,我的网络使用率非常高,但我的应用程序无法访问它。

作为一项实验,我拔掉了以太网电缆,调试速度非常快。 我的符号 DownstreamStore 位于 C:\\Program Files (x86)\\Microsoft Visual Studio 12.0\\Common7\\IDE\\DownstreamStore。 在 Tools\\Debugging\\Symbols 下,我清除了缓存,当我尝试退出时,我收到一条消息,提示它需要管理员权限才能继续。

可能是权限(自 2013 年以来可能已更改)导致符号从 Internet 加载。 我将目录更改为闪存驱动器上的另一个非管理位置并进行了调试。 第一次很慢,但后来就很快了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM