Visual Studio 2008:使用“生成解决方案”不会创建.pdb文件

3
我有一个包含多个C++项目的Visual Studio 2008解决方案。当我选择Debug配置并分别构建每个项目时,我会在Debug目录中找到每个项目的.pdb文件。但是,当我构建整个解决方案时,我找不到它们。输出文件出现在Debug目录中,但是缺少 .pdb文件。
有任何想法吗?

请将详细程度设置为诊断后的构建输出发布,好吗? - Daniel Gehriger
3个回答

8

查看项目属性 > 编译 - 点击高级编译选项,然后会打开一个新窗口,找到生成调试信息,您可以选择无、pdb - 仅或完全 - 如果选择无,则这可能是您没有pdb的原因。


5
构建整个解决方案确实会构建单个项目(如果可能的话并行进行)。要构建的项目配置在配置管理器对话框中指定。这还指定了项目是否被构建,或者在该解决方案配置中是否将其排除在构建之外。

因此,如果您的PDB未显示,请再次检查您的项目是否正在构建(您似乎是这样说的,但为了确保,请删除所有中间和输出文件夹,并再次构建解决方案)。还要检查为每个解决方案配置分配了哪些项目配置。也许您的Debug解决方案配置实际上引用了一些Release项目配置(或Debug_but_no_pdb)。

如果仍然没有帮助,请为构建过程启用详细输出:

工具 > 选项 > 项目和解决方案 > 构建和运行 > MSBuild项目构建输出详细程度:诊断

另外,请仔细检查所有项目依赖项以查找无效引用。


0

好的,关于你的项目,你在这里没有告诉我们很多。不过,这个参考资料可能会提供一些提示:

http://msdn.microsoft.com/en-us/library/ms241903.aspx

基于此,我注意到由于pdb是用于增量链接的,也许编译器认为它们不需要,因为它正在作为构建的一部分进行最终链接。

此外,由于EXE路径是PDB查找的位置之一...有没有可能它们在该目录中?


据我理解,有关项目构建方式的所有配置都存储在.cs_proj文件中。当您构建一个解决方案时,msbuild只是根据每个项目的.cs_proj文件中指定的规则构建每个项目。由于.cs_proj文件指定要构建.pdb文件并将其放置在与.exe相同的目录中,因此当我构建解决方案而不是每个项目时,我不知道为什么这不会发生。 - Jeff Dege
@Jeff:你的问题涉及到C++项目,但是这个评论涉及到C#项目。你确定你正在处理正确的构建配置吗? - Michael Burr
抱歉,我们使用大量的C#和C++,我把它们的扩展名搞混了。这些是.vcproj文件。 - Jeff Dege

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接