什么是PDB文件?

22

什么是.NET dll文件中的PDB文件,它有什么作用?通常人们在部署时会删除此文件,只保留lib文件夹中的dll文件,但似乎没有任何影响,一切都正常运行...


1
有关程序数据库文件的讨论,请参见管理符号和源代码 - Damien_The_Unbeliever
5个回答

27

程序数据库文件与增量链接和项目状态无关!PDB文件用于将EXE文件和源代码进行映射,用于Debug和Release二进制文件。这篇文章在此解释了可执行文件和其PDB文件之间的绑定关系。


这篇文章(http://www.codeproject.com/Articles/37883/Symbols-File-Locator)也解决了这个问题。 - mox
那么,如果我的中间层有一个配置文件,其中包含绑定、端点、安全等信息...那么它会引用pdb吗? - J.S. Orris

20

PDB文件存储了允许您调试应用程序的信息。

这些文件通常不部署的原因是通常没有必要将它们一起发布。如果您想要调试应用程序,您可以随时从目录、网络共享或符号服务器中加载它们。


+1 票。感谢您的回答,但我不能将所有答案都标记为正确。 - Afshin Mehrabani


0
在.NET中,它主要只保留本地变量的符号信息(还有作用域信息,如果我没记错的话)。

你能解释一下符号吗? - J.S. Orris

0
程序数据库(PDB)文件保存调试和项目状态信息,允许增量链接程序的调试配置。当您使用 /ZI 或 /Zi 编译 C/C++ 程序或使用 /debug 编译 Visual Basic/C#/JScript .NET 程序时,将创建 PDB 文件。 每次创建 OBJ 文件时,C/C++ 编译器会将调试信息合并到 VCx0.PBD 中。插入的信息包括类型信息,但不包括符号信息,如函数定义。因此,即使每个源文件都包含常见的头文件,例如,这些头文件中的 typedef 也仅存储一次,而不是在每个 OBJ 文件中都有。

2
这是不正确的!PDB与项目状态信息和增量链接无关。PDB确实包含符号,例如定义。请参阅下面来自mox的更多详细信息。 - mox
2
看起来像是 https://msdn.microsoft.com/en-us/library/yd4f8bd1(vs.71).aspx 的复制粘贴。 - michaelmsm89

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