什么是PDB文件?

时间:2010-10-10 08:23:02

标签: c# pdb-files

什么是PDB文件?如何在重建解决方案时将其从发布文件夹中排除?

5 个答案:

答案 0 :(得分:208)

PDB文件包含要使用的调试器的信息。无论如何,Release版本中的信息少于Debug版本中的信息。但是如果你想要它根本不生成,请转到项目的Build属性,选择Release配置,单击“Advanced ...”,然后在“Debug Info”下选择“None”。

答案 1 :(得分:102)

我原先问自己一个问题“我是否需要将PDB文件部署到我客户的机器上?”,在阅读完这篇文章后,决定排除该文件。

一切正常,直到今天,当我试图弄清楚为什么包含Exception.StackTrace的消息框缺少文件和行号信息时 - 需要对异常进行故障排除。我重新阅读了这篇文章并找到了关键的信息:虽然PDB不是运行应用程序所必需的,但文件和行号必须存在于StackTrace字符串中。我将PDB文件包含在可执行文件夹中,现在一切正常。

答案 2 :(得分:72)

PDB P rogram D ata B ase的缩写。顾名思义,它是一个存储库(持久性存储,如数据库),用于维护在调试模式下运行程序所需的信息。它包含调试代码(在Visual Studio中)时所需的许多重要相关信息,例如,在什么点插入了断点,您希望调试器在Visual Studio中中断。

这就是为什么如果从调试文件夹中删除*.pdb文件,Visual Studio很多次都无法达到断点的原因。 Visual Studio调试器还能够在*.pdb文件的帮助下告诉您堆栈跟踪中发生异常的代码文件的精确行号。因此,有效的pdb文件在调试程序时对开发人员来说真的很有用。

通常不建议排除*.pdb文件的生成。从生产发布的角度来看,您应该做的是创建pdb文件,但不要将它们发送到产品安装程序中的客户站点。将所有生成的PDB文件保留在符号服务器上,以备将来可以使用/引用它。 特别适用于调试进程崩溃等问题的情况。当您开始分析故障转储文件时,如果未保留在构建过程中创建的原始*.pdb文件,则Visual Studio将无法确定导致崩溃的确切代码行

如果您仍想为任何版本完全禁用*.pdb个文件的生成,请转到项目的属性 - >构建标签 - >点击高级按钮 - >从“调试信息”下拉框中选择none - >按确定,如下面的快照所示。

None Debug Info setting for a C# Project

注意:此设置必须单独为“调试”和“发布”构建配置完成。

答案 3 :(得分:13)

PDB file包含调试器使用的信息。它不需要运行您的应用程序,也不需要包含在您发布的版本中。

您可以禁用在Visual Studio中创建的pdb文件。如果要从命令行或脚本构建,则省略/Debug开关。

答案 4 :(得分:0)

程序调试数据库文件(pdb)是Microsoft用来存储调试信息的文件格式。

使用Visual Studio或命令提示符构建项目时,编译器将创建这些符号文件。

选中Microsoft Docs