什么是PDB文件?

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

255716 次浏览

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

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

PDB文件包含调试器要使用的信息。发布版本中的信息比调试版本中的信息要少。但是如果你想让它完全不生成,转到项目的Build属性,选择Release配置,点击“Advanced…”,在“Debug Info”下选择“None”。

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

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

PDB是__abc1program - debug Data Base的缩写。顾名思义,它是一个存储库(如数据库等持久存储),用于维护在调试模式下运行程序所需的信息。它包含了代码调试所需的一些重要信息,例如,在Visual Studio (VS)中,你在什么位置设置了断点,你希望调试器在哪里中断。

这就是为什么如果你从调试目录中删除PDB文件,Visual Studio无法命中断点的原因。Visual Studio调试器能够告诉您发生异常的代码文件的确切行数及其堆栈跟踪。它只能在PDB文件的帮助下做到这一点。因此,PDB文件对调试非常有用。

一般情况下,不建议在构建过程中排除PDB文件的生成。从产品发布的角度来看,你应该做的是创建PDB文件,但不要在产品安装程序中将它们发送到客户站点。将所有生成的PDB文件保存在符号服务器中,以便将来在需要时使用/引用。

这在调试进程崩溃问题的场景中特别重要。在分析崩溃转储文件时,如果在构建过程中创建的原始PDB文件没有保存,Visual Studio将无法确定程序崩溃的确切代码行。

如果你仍然想禁用生成PDB文件,那么按照以下步骤:

  1. 进入项目属性窗口。打开属性窗口,在解决方案资源管理器中选择项目文件并按Alt + 输入
  2. 进入构建选项卡
  3. 单击先进的
  4. 调试信息下拉框中选择没有一个
  5. 好吧,如下图所示:

None Debug Info setting for a c# Project .

请注意:此设置必须分别用于调试释放构建配置。

程序调试数据库文件(pdb)是微软公司用于存储调试信息的文件格式。

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

检查微软文档