【问题标题】:How to Troubleshoot Visual Studio 2012 Hangs/Lockups如何解决 Visual Studio 2012 挂起/锁定问题
【发布时间】:2016-09-02 03:36:04
【问题描述】:

我在 Visual Studio 中进行 PHP 开发,我的解决方案包含 PHP、SSRS 和 SQL Server (SSDT) 项目。我正在使用 TFS 进行版本控制。所以在我的开发环境中发生了很多可能“出错”的事情。

我遇到了间歇性挂起,通常一个剪辑大约 5 分钟。 Visual Studio 给了我等待光标,如果我单击 VS 中的任何位置,窗口就会变暗。然后我只需要等待它。有时我可以结束 devenv.exe 任务,有时需要几分钟才能终止任务。如果我有耐心,我会等待,最终(大约 5 分钟)VS 会恢复活力。我从未遇到过数据丢失、源代码控制问题等问题,即使我终止了进程。

有时会在我保存时发生。有时当我办理登机手续时。有时我退房的时候。有时当我建立。我一直无法辨别这种行为的任何形式。

我所有的工作站资源都很好——没有 RAM 或 i/o 或网络或 CPU 问题。

我可以做些什么来解决这个问题?我可以在某种日志模式下运行 VS,这样我就可以查明在这些锁定期间花费了这么长时间的原因?

【问题讨论】:

  • 在安全模式下运行它,看看它是否是一个加载项:devenv.exe /SafeMode
  • 您也可以尝试开启日志记录:denenv.exe /log
  • @ta.speeot.is - 如果我在安全模式下运行,我无法加载我的项目,因为它依赖于扩展来进行我的 PHP 开发。

标签: visual-studio-2012 freeze


【解决方案1】:

要在 Visual Studio 中打开日志记录,请运行:devenv.exe /log

我个人会使用快捷方式来做到这一点。

【讨论】:

  • 对于阅读本文的其他人,您还必须在命令行中指定日志文件名,例如:devenv.exe /log c:\temp\vs.log(另见msdn.microsoft.com/en-us/library/ms241272(v=vs.110).aspx
  • 这是一个有用的链接...它针对 VS2010,图像已损坏,但这是我能找到的关于该主题的最佳文章:blogs.msdn.com/b/visualstudio/archive/2010/02/24/…
  • VS 挂起。我查看了日志,发现我的 Layouts-o-rama 扩展有很多错误。我禁用了该扩展程序,并且从那以后没有锁定 VS!
  • 如果您不指定日志文件名,则默认日志文件位于:%APPDATA%\Roaming\Microsoft\VisualStudio\\ActivityLog.xml 我很高兴日志记录有所帮助你。
【解决方案2】:

考虑从持续集成构建中删除旧的 TFS 工作区定义。

我们在大型 Team Foundation Server 项目树中遇到了同样的问题。 有时,但并非总是如此,在 Visual Studio 2010 或 Visual Studio 2012 中打开解决方案会完全按照上述方式挂起。 VS 2010 最脆弱; VS 2012 似乎不那么容易受到攻击,但它仍然会挂起。

通过监视 TFS Server 机器和底层 SQL Server 机器上的服务器活动,我们能够获得一些线索。某个查询存储过程在 SQL Server 中使用了过多的 CPU 时间。我们将此存储过程名称跟踪到一个 TFS 操作,该操作涉及扫描 TFS 工作区定义以查找其他用户的文件签出。

我们的 TFS 环境已经使用了 3 年多,我们一直在使用持续集成构建定义,将开发人员工作站的“僵尸军队”用作 TFS 构建代理主机。我们还为主要版本创建新的 TFS 分支。每个分支都包含大约 20 个独立的 Visual Studio 解决方案,它们都有自己的构建定义。

随着时间的推移,我们在每个开发人员工作站上积累了大约 2,000 个 TFS 工作区定义。我们一次有大约 10 个工作站,它们都有自己的定义。

使用 Visual Studio 命令窗口并以 TFS 管理员身份运行,我们使用此命令来识别由我们的“构建用户”创建的所有工作区:

tf 工作区 /collection:tfservername\collectionname /owner:ourbuilduser >c:\tf_ws_del.bat

然后我们使用全局替换和 Notepad++ 编辑器宏记录器将每个结果行转换为这种形式:

tf 工作区 /delete /collection:tfservername\collectionname 工作区名;ourbuilduser

其中 C:\yes.txt 包含单行“y”

我们还使用了一些人工判断来删除以我们最近的 TFS 分支命名的工作区的删除行。

然后我们在同一个 Visual Studio 命令窗口中运行 c:\tfs_ws_del.bat 脚本并耐心等待它完成。

最终结果:我们的 Visual Studio 解决方案打开速度非常快。甚至在源代码管理资源管理器中浏览文件夹层次结构也大大加快了速度。

警告:大量工作区的删除操作可能会大量扩展基础 SQL Server 上的 TempDB。与您的 DBA 协调以监控 SQL Server 机器上的空间。通过图形化 TFS 管理员控制台工具停止和重新启动 TFS 集合有助于回收部分 TempDB 空间并将其返回到其内部“空闲块”列表。

【讨论】:

    【解决方案3】:

    当您在调试选项中指定的符号服务器关闭或无法访问时,这似乎也会发生......在这种情况下它实际上不会挂起,但似乎每次文件访问都会超时。

    要暂时解决此问题,请取消选中已关闭的符号服务器。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-04
      • 2023-02-12
      • 2013-01-28
      • 1970-01-01
      相关资源
      最近更新 更多