您是否必须部署.pdb文件并在发布时进行编译?
为什么在进行发布构建时甚至会编译.pdb?
答案 0 :(得分:36)
不,您不需要部署它们。
至于为何他们甚至建立在发布。 PDB文件确实有一些用途,但主要用途(至少对我来说)是
这两项任务都是在发布二进制文件上有效完成的,这就是发布版本包含PDB的原因。实际上,在调试Watson转储时,100%的时间是针对发布版本。如果没有PDB,我将不得不求助于通过dissasembly :(
答案 1 :(得分:10)
您不必将PDB文件与二进制文件一起部署和分发。
但是,我建议您保留它们(并最终将它们编入索引),以便能够分析客户端,QA和支持人员发送给您的任何转储文件。这样,您就可以获得可理解的堆栈跟踪和符号信息。
答案 2 :(得分:6)
如果需要,还可以在编译选项中关闭PDB文件生成。
答案 3 :(得分:4)
PDB文件包含有关函数名称的信息。您需要它才能获得堆栈跟踪。它还可以包含有关将其映射到源的信息。有时您可能希望发布发布版本,但仍需要分析客户端发生的崩溃。为此,需要PDB。编译发布时的PDB理论上应该比编译调试时的信息少。
答案 4 :(得分:3)
PDB文件包含调试符号,允许您甚至在发布模式下调试二进制文件 。您不必(也可能不应该部署它们),因为它们可能用于对您的应用程序进行反向工程。但是,请将它们保存在某处,因为当您想要调试崩溃转储时,它们会非常方便。
答案 5 :(得分:2)
不。您不需要分发它们。它将有助于调试(或者我应该说它将为理智的人调试可能)。
您还可以关闭或调整Visual Studio中生成的符号的“级别” - 只需转到“项目属性”/“构建”选项卡/“高级” - 并调整“调试信息”字段。 / p>
答案 6 :(得分:1)
由于此线程中的大多数人都说:不,您不必运送PDB文件;但是如果你打算将代码发布到野外,你真的应该这样做。
这真的是关于能够支持您的应用程序。如果没有PDB,当您的应用程序崩溃时,您的所有用户都可以告诉您应用程序崩溃的原始内存地址;但是使用PDB文件会出现错误,您可以实际执行某些操作。
答案 7 :(得分:0)
不,您不发送.pdb文件。生成它们是因为有时能够调试发布版本是有帮助的。
答案 8 :(得分:0)
AVICode的InterceptStudio等工具使用pdb文件从工具中查看特定异常/堆栈跟踪/本地的来源,而不必打开源并转到特定的行。
答案 9 :(得分:0)
你不需要他们跑。
即使构建在发布配置上,也可以使用pdb文件进行调试。答案 10 :(得分:-4)
不,您不必部署.pdb文件。
引用MSDN,“使用/ debug(Visual Basic / C#)构建时会创建一个PDB文件。”,因此在编译发布时不应该创建调试数据库。