编译器有/Fd选项,链接器有/PDB选项。虽然/PDB
默认为$(OutDir)$(TargetName).pdb
,但编译器选项/Fd
默认为$(IntDir)vc$(PlatformToolsetVersion).pdb
。因此,在构建期间生成两个文件。根据文档,这两个文件都被称为程序数据库文件,两者都与调试信息有关。这两个文件有什么区别?
答案 0 :(得分:1)
VCxxx.pdb文件主要用于静态库项目。它存储库的调试信息。链接器在生成调试器使用的最终PDB文件时需要它,它会为链接到最终映像的实际函数选择相关的调试信息记录。
还有其他一些东西,黑暗,我认为它提供依赖信息。自VS2015 Update 1以来,/ Debug:FASTLINK选项更加复杂,现在它还在运行时提供调试信息。其中交换生成完整PDB的工作,对于大型项目而言非常昂贵,调试器花费更多时间来挖掘VCxxx.pdb文件。几乎总是一场胜利。我从来没有找到覆盖/ Fd的好理由,但始终首选默认构建选项。