什么是PDB文件,在重新构建解决方案时如何将其从发布文件夹中排除?
PDB文件包含调试器使用的信息。它不是运行应用程序所必需的,也不需要包含在您的发布版本中。
您可以禁用在Visual Studio中创建pdb文件。如果从命令行或脚本构建,则省略/Debug开关。
PDB文件包含调试器要使用的信息。发布版本中的信息比调试版本中的信息要少。但是如果你想让它完全不生成,转到项目的Build属性,选择Release配置,点击“Advanced…”,在“Debug Info”下选择“None”。
我最初问自己一个问题“我是否需要将PDB文件部署到客户的机器上?”,在阅读了这篇文章后,我决定排除这个文件。
一切都很正常,直到今天,我试图弄清楚为什么消息框包含异常。StackTrace缺少文件和行号信息——这是排除异常所必需的。我重新阅读了这篇文章,发现了关键的信息:虽然PDB不是应用程序运行所必需的,但在StackTrace字符串中显示文件和行号是必要的。我将PDB文件包含在可执行文件夹中,现在一切正常。
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或命令提示符构建项目时,编译器会创建这些符号文件。
查看微软文档
推荐文章
- 将字符串转换为System.IO.Stream
- 如何从枚举中选择一个随机值?
- 驻留在App_Code中的类不可访问
- 在链式LINQ扩展方法调用中等价于'let'关键字的代码
- dynamic (c# 4)和var之间的区别是什么?
- Visual Studio: ContextSwitchDeadlock
- 返回文件在ASP。Net Core Web API
- 自定义HttpClient请求头
- 如果我使用OWIN Startup.cs类并将所有配置移动到那里,我是否需要一个Global.asax.cs文件?
- VS2013外部构建错误"error MSB4019: The imported project <path> was not found"
- 从另一个列表id中排序一个列表
- 等待一个无效的异步方法
- 无法加载文件或程序集…参数不正确
- c#中枚举中的方法
- 如何从字符串中删除新的行字符?