我对编译器和链接器PDB
文件之间的区别感到困惑(即在Visual Studio中,Project Properties > C/C++ > Output Files > Program Database File Name
vs {{1 }})。我试图在线找到答案,到目前为止我知道(可能是错误的)编译器的Project Properties > Linker > Debugging
文件是为PDB
文件生成的,而链接器的obj
文件是为二进制(exe或dll)生成的,是用于调试的。
如果不是这样,请解释其中的区别。无论哪种方式,我在创建PDB
时该怎么做我可以选择编译器的输出DLL
文件以及链接器以及创建LIB文件时要执行的操作只有编译器生成PDB
文件,因为没有执行链接。
后台:几个项目使用库/ dll,然后需要
PDB
个文件进行调试。对于PDB
文件,没有歧义,因为只生成了一个lib
文件。但是在PDB
的情况下,我是否需要DLL
文件才能正确调试,或者只需要链接器生成的文件?
答案 0 :(得分:12)
老实说,我不知道编译步骤生成的.pdb文件究竟用于什么 - 我假设它是链接器将最终的.pdb文件拉入最终的.pdb文件中的一些中间信息。
但是,最重要的是,出于调试目的,您只需要链接器生成的.pdb文件。
两种类型的.PDB文件是什么?
==============================
有两种类型的PDB文件。一 由编译器生成的名为 VCx0.PDB(例如vc80.pdb)和另一个 .PDB。
VCx0.PDB文件由。生成 编译器,它与.OBJ有关 文件。它包含类型信息 仅
.PDB文件是 由链接器生成,它是 与目标可执行文件相关或 DLL。这个文件包含 完整的调试信息。当我们 调试,我们需要这个'.pdb'文件 用于对齐符号。该 目标文件的时间戳和 PDB应匹配。