52

您是否必须在发布时使用编译来部署 .pdb 文件?

无论如何,当您进行发布构建时,为什么它甚至会编译 .pdb?

4

11 回答 11

37

不,您不需要部署它们。

至于为什么它们甚至内置于发布中。PDB 文件确实有几个用途,但主要用途(至少对我而言)是

  1. 调试
  2. 剖析

这两项任务都在发布二进制文件上有效完成,这就是发布版本包含 PDB 的原因。事实上,当调试 Watson 转储时,它 100% 的时间都是针对发布版本的。如果没有 PDB,我将不得不通过拆机查看:(

于 2009-03-03T20:26:39.673 回答
10

您不必随二进制文件一起部署和分发 PDB 文件。

但是,我建议您保留它们(并最终索引它们),以便能够分析客户、QA 和支持人员发送给您的任何转储文件。这样,您将能够获得可理解的堆栈跟踪和符号信息。

于 2009-03-03T20:36:18.370 回答
6

如果需要,还可以在编译选项中关闭 PDB 文件生成。

于 2009-03-03T20:25:07.680 回答
4

PDB 文件包含有关函数名称的信息。您需要它才能获得堆栈跟踪。它还可以包含有关将其映射到源的信息。有时您可能想要发布您的发布版本,但仍需要分析客户端发生的崩溃。为此,需要 PDB。理论上,为发布而编译时的 PDB 应该比为调试而编译时具有更少的信息。

于 2009-03-03T20:29:34.440 回答
4

PDB 文件包含调试符号,即使在发布模式下也允许您调试二进制文件。您不必(并且可能不应该部署它们),因为它们可能被用来对您的应用程序进行逆向工程。不过,请务必将它们存档在某个地方,因为当您想要调试故障转储时,它们会非常方便。

于 2009-03-03T20:29:34.457 回答
2

没有。您不需要分发它们。它有助于调试(或者我应该说它可以理智的人进行调试)。

您还可以关闭或调整 Visual Studio 中生成的符号的“级别”——只需转到项目属性/“构建”选项卡/“高级”——并对“调试信息”字段进行调整。

于 2009-03-03T20:27:34.693 回答
1

正如该线程上的大多数人所说:不,您不必发送 PDB 文件;但如果你打算将代码发布到野外,你真的应该这样做。

这实际上是关于能够支持您的应用程序。如果没有 PDB,当您的应用程序崩溃时,您的用户只能告诉您应用程序崩溃的原始内存地址;但是使用 PDB 文件,您会收到一个错误,您实际上可以做一些事情。

于 2009-03-03T20:38:15.463 回答
0

不,您不发送 .pdb 文件。生成它们是因为有时能够调试发布版本会很有帮助。

于 2009-03-03T20:26:38.487 回答
0

一些工具,如 AVICode 的 InterceptStudio 使用 pdb 文件从工具中查看特定异常/堆栈跟踪/本地的源,而不必打开源并转到特定行。

于 2009-03-03T20:27:49.000 回答
0

您不需要它们运行。

即使构建是在发布配置上,pdb 文件也可用于调试。

于 2009-03-03T20:36:16.467 回答
-5

不,您不必部署 .pdb 文件。

引用MSDN的话说,“使用 /debug (Visual Basic/C#) 构建时会创建 PDB 文件。”,因此在编译发布时不应创建调试数据库。

于 2009-03-03T20:25:58.910 回答