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


当前回答

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

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

其他回答

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

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

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

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

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

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

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

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

进入项目属性窗口。打开属性窗口,在解决方案资源管理器中选择项目文件并按Alt + Enter。 转到Build选项卡 单击高级 “调试信息”下拉框选择“不” 按OK,如下图所示:

注意:此设置必须分别用于调试和发布构建配置。

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

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

查看微软文档

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

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