c++ - Compiler PDB file and the Linker PDB file -


I am comprehending what is the difference between compiler and linker PDB files ( For instance Visual Studio, Project Properties> C / C ++> Output Files> Program Database File Name vs Project Properties & gt; Linker & Gt; debugging ) . I have tried to find the answers online and so far I know (may be wrong) that the file is generated by PDB file by the compiler for the file obj while < Code> PDB is generated by the linker for the file binary (XE or DLL) and used for debugging.

If this is not true, please explain the difference in any way, when I am making a DLL , then what to do, where I have a compiler There is an option to choose the output code for the linker and then what I am doing is creating a LIB file, where only the compiler generates the PDB because no one Linking is not done

Background: Use the library / DLL E projects, after which debugging requires PDB files. In the case of a lib file, there is no ambiguity because there is only one PDB file generated but in case of a DLL , do both of me Is both required to properly debug the PDB files or by linking?

I do not know what was generated by the compile phase. How is the use of a PDB file - I think it is the final by linking some intermediate information. Pdb is dragged into the file.

However, the bottom line is that you have only .pdb file for debugging purposes which is produced by linker.


Update: At least digging from this:

There are two types of PDB files?

====== ================================

< P> There are two types of PDB files, one more generated by the compiler called VCx0.PDB. PDB PDB

The VCx0.PDB file is generated by the compiler and it is related to the O.J.J file. It has only type information.

.pdb files are generated by the linker and it is related to the executable or DLL. This file has full debug information when we debugging, then we need the '.pdb' file to align the symbols. The timestamp match of the target file and PDB should match.


Comments