2012-06-26 32 views
9

.NET dll文件中的PDB文件是什么?它的功能是什么?通常人们在部署时只删除这个文件,只保留lib文件夹中的dll文件,但似乎什么也没有发生,一切正常......什么是PDB文件?

那么,什么是PDB文件呢?

+1

请参阅[管理符号和源代码](http://msdn.microsoft.com/zh-cn/library/ms241613)讨论程序数据库文件。 –

回答

12

程序数据库文件与增量链接和项目状态无关! PDB文件用于映射EXE和SOURCES。它们用于调试和发布二进制文件。 Here an article,它解释了可执行映像和其PDB文件之间的绑定关系

+0

本文(http://www.codeproject.com/Articles/37883/ Symbols-File-Locator)也解决了这个问题 – mox

+0

因此,如果我的中间层上有一个配置文件,包含绑定,端点,安全等等......那么它会引用pdb? –

0

在.NET中,它大多只保留局部变量的符号信息(并且范围信息也是IIRC)。

+0

你可以详细说明符号吗? –

7

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

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

+0

+1票。感谢您的回答,但我无法将所有答案都标记为正确。 –

1

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

+2

这是不正确的! PDB与项目状态信息和增量链接无关。 PDB确实包含定义等符号。从mox下面看到更多细节。 – mox

+1

看起来像复制粘贴https://msdn.microsoft.com/en-us/library/yd4f8bd1(vs.71).aspx – michaelmsm89