首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >编译器PDB文件和Linker PDB文件

编译器PDB文件和Linker PDB文件
EN

Stack Overflow用户
提问于 2010-09-26 00:17:30
回答 1查看 7.8K关注 0票数 19

我对编译器和链接器PDB文件之间的区别感到困惑(即在Visual中,Project Properties > C/C++ > Output Files > Program Database File Name vs Project Properties > Linker > Debugging__中)。我试图在网上找到答案,到目前为止,我知道(可能是错误的)编译器生成的PDB文件是为obj文件生成的,而链接器的PDB文件是为二进制文件(exe或dll)生成的,并且是用于调试的。

如果这不是真的,请解释一下区别。无论是哪种方式,当我创建一个DLL时,我可以选择为编译器和链接器选择输出PDB文件,以及当我创建一个LIB文件时要做什么,在这个文件中只有编译器生成PDB文件,因为没有执行链接。

后台:库/dll由几个项目使用,然后需要PDB文件进行调试。对于lib文件,不存在歧义,因为只有一个PDB文件生成。但是,在DLL的情况下,我需要两个PDB文件来正确调试还是只需要链接器生成的文件?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-09-26 01:29:04

老实说,我不知道编译步骤生成的.pdb文件究竟用于什么目的--我假设链接器会将这些中间信息拖到最终的.pdb文件中。

但是,底线是,为了调试目的,您只需要链接器生成的.pdb文件。

更新:从http://blogs.msdn.com/b/yash/archive/2007/10/12/pdb-files-what-are-they-and-how-to-generate-them.aspx上挖了一个小网

两种类型的.PDB文件是什么?

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

有两种类型的PDB文件。一个由名为VCx0.PDB的编译器生成(例如vc80.pdb),另一个由.PDB生成。

VCx0.PDB文件由编译器生成,并与.OBJ文件相关。它只包含类型信息。

.PDB文件由链接器生成,它与目标可执行文件或DLL相关。此文件包含完整的调试信息。在调试时,我们需要这个“.pdb”文件来对齐符号。目标文件和PDB的时间戳应该匹配.。

票数 14
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3796090

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档