在使用Visual Studio 2005(版本8.0.50727.762)进行长时间编译期间,我有时会在某个项目的多个文件中出现以下错误:
fatal error C1033: cannot open program database 'v:\temp\apprtctest\win32\release\vc80.pdb'
(项目的临时目录中提到的文件是vc80.pdb
或vc80.idb
。)
同一项目的下一个版本成功。没有其他Visual Studio打开可能访问相同的文件。
这是一个严重的问题,因为它无法进行夜间编译。
答案 0 :(得分:21)
我们在我的网站上也看到过这么多。根据我们的设置,来自Peter Kaufmann的This explanation似乎是最合理的:
在Visual Studio 2005中构建解决方案时,会出现致命错误C1033之类的错误:无法打开程序数据库'xxx \ debug \ vc80.pdb'。但是,当第二次运行构建时,它通常会成功。
原因:解决方案中的两个项目可能正在将其输出写入同一目录(例如'xxx \ debug')。如果工具 - 选项,项目和解决方案 - Bild和Run中的最大并行项目构建数设置为大于1的值,则这意味着两个编译器线程可能尝试同时访问相同的文件,从而生成一个文件分享冲突。 解决方案:检查项目的设置,确保没有两个项目对输出,目标或任何类型的中间文件使用相同的目录。或者将并行项目构建的最大数量设置为1以便快速解决方法。我在使用CLAPACK库附带的VS项目文件时遇到了这个问题。 更新:Tortoise SVN有可能访问'vc80.pdb',即使该文件不受版本控制,这也可能导致上述错误(感谢Liana报告此情况)。但是,我无法确认这一点,因为在确保所有项目使用不同的输出目录后,我无法重现该问题。
答案 1 :(得分:21)
防病毒或类似程序有可能在写入时触及pdb文件 - 在这种情况下,防病毒是最可能的嫌疑人。根据我过去在我们店里设置夜间建筑的经验,我担心我只能给你一些一般性的指示。其中一些可能听起来微不足道,但为了完成,我将它们包括在内。
如果没有其他工作,您可以在构建开始几个小时后安排监视程序脚本并检查其状态;如果构建失败,监视程序应该重新启动它。这是一个丑陋的黑客,但它总比没有好。
答案 2 :(得分:8)
将调试信息切换为C7格式,而不是使用PDB。
Project Options -> C/C++ -> General -> Debug Information Format
并将其设为C7
。
答案 3 :(得分:6)
当您之前的调试尝试没有完全杀死调试器时,通常会发生这种情况。 在任务管理器中查找名为vcjit的进程,将其杀死并重试。 最糟糕的选项重启visual studio,这应该可以解决你的问题。
答案 4 :(得分:1)
我今天遇到了这个问题,结果是导致它的pdb路径中的非ansi字符。
我正在通过vmware使用Windows,我的项目位于共享位置:\ vmware-host \ Shared Folders \ project
当我将其移至\ Users \ julian \ project时,它解决了问题。
答案 5 :(得分:1)
尝试右键单击VS ....和Properties-> Compatibility->的可执行文件。勾选“在兼容模式下运行此程序:”OFF ........
答案 6 :(得分:1)
我在处理Dropbox文件夹中的项目时遇到了类似的问题。我发现当系统托盘中的Dropbox图标上出现小“同步”图标时,它会抛出此错误,因为Dropbox正在访问文件以将它们上传到他们的服务器。当我等待构建直到Dropbox完成同步时,它每次都有效。
答案 7 :(得分:1)
我刚遇到这个问题。 Visual Studio抱怨无法打开vc100.pdb
。我使用procexp
查找了此文件的打开文件句柄,发现进程mspdbsrv
有一个打开的文件句柄。杀死这个过程修复了问题,我能够编译。
答案 8 :(得分:0)
你在使用LinqToSql吗?也许它类似于我在这个问题中偶尔会遇到的奇怪错误:What causes Visual Studio to fail to load an assembly incorrectly?
答案 9 :(得分:0)
我改变了我的中间目录:
%TEMP%\$(ProjectName)\$(Platform)\$(Configuration)\
到
C:\temp\$(ProjectName)\$(Platform)\$(Configuration)\
现在有效。不知道为什么。
答案 10 :(得分:0)
我有同样的问题C1033: cannot open program database
,
<强>方案强>
我有两个dll的 parent.dll 和 child.dll 。我刚刚使用visual studio调试器连接了child.dll项目尝试构建parent.dll项目,产生错误C1033: cannot open program database
<强>解决方案强>
停止调试并终止使用调试器附带的进程。重建项目
答案 11 :(得分:0)
如果我 Ctrl + Break 取消构建(vs2015),这种情况一直发生在我身上。有些过程没有正常关闭。我进行了横冲直撞&#34; End Tasking&#34; ms / vs相关进程(查找重复项),我的构建再次起作用。重启可能也会起作用。就像转向gnu binutils一样。
恼人的解锁工具不报告锁定文件的任何进程,Windows不允许我删除.pdb
但我可以重命名它。我的猜测是在构建期间同时跳入两个进程。