【问题标题】:VS2013 C++ : slow linking processVS2013 C++:缓慢的链接过程
【发布时间】:2014-11-05 13:32:57
【问题描述】:

您是否曾经在 C++ 项目编译中遇到过缓慢的链接过程(我使用的是 VS2013)?构建 5 分钟后,我的链接过程需要 15 分钟。重建或 Visual Studio 重新启动不能解决问题。 任务管理器显示 mspdbsrv.exe 占用了一个完整的核心(4 核心上占 25%),并且 pdb 文件的创建非常缓慢,Kb 后达到 50 Mb。 附加信息:

  • 同一项目在另一台计算机上在可接受的时间内构建和链接。
  • 防病毒已禁用
  • 我已尝试更改 pdb 文件创建位置:没有成功
  • 我已将链接器输出设置为 Verbose,但它会在一个调试行处停止,然后一直在那里等待。
  • VS2013 更新到 SP4
  • 我的笔记本电脑上显示的硬盘活动大部分已关闭,因此磁盘上没有完整的活动。
  • 我运行的是 Windows 7 Pro。
  • VS2013 以管理员权限运行

谢谢。

【问题讨论】:

  • Mspdbsrv.exe烧100%核心当然是问题。很难想出一个理由,它已经稳定了很长一段时间。使用调试器进行查看,启动另一个 VS 实例并使用 Tools + Attach to Process 附加到进程,而它正在被奴役。寻找诸如过多异常之类的东西,在重复使用 Debug + Break All 时查看堆栈跟踪以猜测它可能挂在哪里。 一些东西向我们展示。强烈建议致电 Microsoft 支持,他们会要求您记录 ETW 跟踪并将其发送给他们。
  • 您是否尝试过以管理员身份运行 VS2013?
  • 是的,完成了。我将添加到上面的列表中
  • @HansPassant:使用“附加到进程”功能然后点击 Break All 位于库 C:\Program Files\Microsoft Visual Studio 12.0\VC\bin\mspdbcore.dll 中的某个位置。
  • 请检查“Active configuration->C/C++->General->Multiprocess compilation 下的并行编译设置,VS2013默认关闭。也可能需要更改代码生成->启用最小重建到编号。

标签: visual-studio-2013 msbuild linker build-process pdb-files


【解决方案1】:

修复了将“调试信息格式”从 /ZI(编辑并继续功能)更改为 /Zi。我仍然不知道为什么这会导致仅在特定计算机上而不是其他计算机上的缓慢链接。希望这可以帮助到这里来解决同样问题的人。

【讨论】:

    【解决方案2】:

    是否使用链接时间代码生成?在 VS2010 上,该步骤是单线程的,因此它比明显的编译步骤花费的时间要长得多。根据博客文章,在以后的版本中,此步骤被改进为多线程。它还提到 PDB 访问是一个瓶颈。那么,也许您的系统上有一个 old mspdbsrv.exe?查看文件上的版本信息,并在机器之间进行比较。可能还有一些选项可以控制其锁定和多用途行为,隐藏在某个地方。

    【讨论】:

    • 使用任务管理器,查看进程路径位置,它指向 C:\Program Files\Microsoft Visual Studio 12.0\VC\bin 所以它使用的是 VS2013 可执行文件
    • 也许您可以找到有关通过线程、LTCG、PDB 访问等改进链接时间的博客文章,然后联系这些文章的作者并询问为什么它对您来说就像旧的 VS10。
    猜你喜欢
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 1970-01-01
    • 2013-02-26
    相关资源
    最近更新 更多