【发布时间】:2010-10-11 02:46:58
【问题描述】:
是否必须在发布下编译时部署 .pdb 文件?
为什么在您进行发布构建时它甚至会编译 .pdb?
【问题讨论】:
标签: .net deployment release-management
是否必须在发布下编译时部署 .pdb 文件?
为什么在您进行发布构建时它甚至会编译 .pdb?
【问题讨论】:
标签: .net deployment release-management
如果需要,您还可以在编译选项中关闭 PDB 文件生成。
【讨论】:
不,您不必部署 .pdb 文件。
引用MSDN 的话,“使用 /debug (Visual Basic/C#) 构建时会创建一个 PDB 文件。”因此在编译发布时不应创建调试数据库。
【讨论】:
不,您不发送 .pdb 文件。生成它们是因为有时能够调试发布版本会很有帮助。
【讨论】:
不,您不需要部署它们。
至于为什么它们甚至内置于发行版中。 PDB 文件确实有多种用途,但主要用途(至少对我而言)是
这两项任务都在发布二进制文件上有效完成,这就是发布版本包含 PDB 的原因。事实上,当调试 Watson 转储时,它 100% 的时间都是针对发布版本的。如果没有 PDB,我将不得不求助于拆散:(
【讨论】:
不。您不需要分发它们。它将有助于调试(或者我应该说它会让理智的人可能进行调试)。
您还可以关闭或调整 Visual Studio 中生成的符号的“级别”——只需转到项目属性/“构建”选项卡/“高级”——并调整“调试信息”字段。
【讨论】:
AVICode 的 InterceptStudio 等一些工具使用 pdb 文件从工具内查看特定异常/堆栈跟踪/本地的源,而不必打开源并转到特定行。
【讨论】:
PDB 文件包含有关函数名称的信息。您需要它才能获得堆栈跟踪。它还可以包含有关将其映射到源的信息。有时您可能想要发布您的发布版本,但仍需要分析客户端发生的崩溃。为此,需要 PDB。理论上,为发布而编译时的 PDB 应该比为调试而编译时具有更少的信息。
【讨论】:
PDB 文件包含允许您调试二进制文件的调试符号即使在发布模式下。您不必(并且可能不应该部署它们),因为它们可能用于对您的应用程序进行逆向工程。不过,请务必将它们存档在某个地方,因为当您想要调试故障转储时,它们会非常方便。
【讨论】:
你不需要它们来运行。
即使构建是在发布配置上,pdb 文件也可用于调试。
【讨论】:
您不必随二进制文件一起部署和分发 PDB 文件。
但是,我建议您保留它们(并最终将它们编入索引),以便能够分析客户、QA 和支持人员发送给您的任何转储文件。这样,您将能够获得可理解的堆栈跟踪和符号信息。
【讨论】:
正如该线程中的大多数人所说:不,您不必发送 PDB 文件;但如果你打算将代码发布到野外,你真的应该这样做。
真正重要的是能够支持您的应用程序。如果没有 PDB,当您的应用程序崩溃时,您的用户只能告诉您应用程序崩溃的原始内存地址;但是使用 PDB 文件,您会收到一个错误,您实际上可以做一些事情。
【讨论】: