c++ - 编译随机失败: "cannot open program database"

标签 c++ visual-studio visual-studio-2005 compiler-errors nightly-build

在使用 Visual Studio 2005(版本 8.0.50727.762)进行长时间编译期间,我有时会在某些项目的多个文件中遇到以下错误:

fatal error C1033: cannot open program database 'v:\temp\apprtctest\win32\release\vc80.pdb'

(提到的文件是项目临时目录中的 vc80.pdbvc80.idb。)

同一项目的下一个构建成功。没有其他打开的 Visual Studio 可以访问相同的文件。

这是一个严重的问题,因为它使得夜间编译变得不可能。

最佳答案

防病毒程序或类似程序可能在写入时接触 pdb 文件 - 在这种情况下最有可能是防病毒程序。恐怕我只能根据我过去在我们商店设置夜间构建的经验为您提供一些一般性的指导。其中一些可能听起来微不足道,但我将它们包括在内是为了完整。

  • 首先也是最重要的:确保您从头开始。也就是说,在开始每晚之前强制删除构建的输出目录。
  • 如果您的夜间计算机上安装有防病毒软件、反 spy 软件或其他此类程序,请考虑将其删除。如果这不是一个选项,请将 obj 文件夹添加到程序的排除列表中。
  • (可选)考虑使用 VCBuild 或 MSBuild 等工具作为每晚的一部分。我认为如果您使用的是多核计算机,最好使用 MSBuild。我们使用 IncrediBuild 进行夜间播放,使用 MSBuild 进行发布,从未遇到过您描述的问题。

如果没有其他办法,您可以在构建开始后几个小时安排一个看门狗脚本并检查其状态;如果构建失败,看门狗应该重新启动它。这是一个丑陋的黑客行为,但总比没有好。

关于c++ - 编译随机失败: "cannot open program database",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36232385/

相关文章:

c - 在 visual studio 2005 中强制执行 C 风格注释

c - 在哪里可以找到 Visual Studio 的 C99 数学实现?

c++ - 这是交换(多线程)的异常安全实现吗?

c++ - 在阻塞模式下使用 TServerSocket 时如何处理异常?

c# - Shell命名空间扩展。 C#。 C++,MFC,AT-使用什么?

visual-studio - Azure 模拟器连接错误

c++ - 在 DirectX 9 中使用可扩展数组绘制三角形

C++ 无法从映射中调用 lambda 表达式

c++ - MS Visual Studio Professional 2013 - C++ 为 32 位和 64 位操作系统编译单个可执行文件?

c++ - 如何在 Visual Studio 2005 中创建 ATL/C++ ActiveX DLL