.net 是否必须在发行版下使用编译部署.pdb文件?
是否必须在发行版下使用编译部署.pdb文件.net 是否必须在发行版下使用编译部署.pdb文件?,.net,deployment,release-management,.net,Deployment,Release Management,是否必须在发行版下使用编译部署.pdb文件 为什么在执行发布版本构建时它甚至会编译.pdb?如果需要,还可以在编译选项中关闭pdb文件生成功能。不,您不必部署.pdb文件 引用“PDB文件是在使用/debug(Visual Basic/C#)构建时创建的”,因此在编译发布时不应创建调试数据库。不,您不提供.PDB文件。之所以生成它们,是因为有时能够调试发布版本很有帮助。不,您不需要部署它们 至于为什么它们是内置的。PDB文件确实有几个用途,但主要用途(至少对我来说)是 调试 轮廓 这两项任务都是
为什么在执行发布版本构建时它甚至会编译.pdb?如果需要,还可以在编译选项中关闭pdb文件生成功能。不,您不必部署.pdb文件
引用“PDB文件是在使用/debug(Visual Basic/C#)构建时创建的”,因此在编译发布时不应创建调试数据库。不,您不提供.PDB文件。之所以生成它们,是因为有时能够调试发布版本很有帮助。不,您不需要部署它们 至于为什么它们是内置的。PDB文件确实有几个用途,但主要用途(至少对我来说)是
这两项任务都是在发行版二进制文件上有效完成的,这就是发行版构建包含PDB的原因。事实上,当调试Watson转储时,100%的时间都是针对发布版本的。如果没有PDB,我将不得不求助于查看dissasembly:(不,您不需要分发它们。它将有助于调试(或者我应该说它将使正常人能够进行调试)
您还可以关闭或调整Visual Studio中生成的符号的“级别”-只需转到“项目属性”/“构建”选项卡/“高级”-并对“调试信息”字段进行调整。某些工具(如AVICode的InterceptStudio)使用pdb文件从工具中查看特定异常/堆栈跟踪/本地的源,如ra而不是必须打开源代码并转到特定行。PDB文件包含有关函数名称的信息。您需要它才能获得堆栈跟踪。它还可以包含有关将其映射到源代码的信息。有时您可能希望发布发布版本,但仍需要分析客户端上发生的崩溃为此,需要PDB。理论上,为发布而编译时PDB的信息应该比为调试而编译时少。PDB文件包含调试符号,允许您在发布模式下调试二进制文件。您不必(也可能不应该部署它们),因为它们可能用于对应用程序进行反向工程。不过,一定要将它们存档在某个地方,因为当您要调试崩溃转储时,它们非常方便。您不需要运行它们
pdb文件可用于调试,即使构建是在版本配置上。您不必将pdb文件与二进制文件一起部署和分发
但是,我建议您保留它们(并最终对它们进行索引),以便能够分析客户端、QA和支持人员发送给您的任何转储文件。这样,您将能够获得可理解的堆栈跟踪和符号信息。正如此线程上的大多数人所说:不,您不必发送PDB文件;但如果您打算将代码发布到野外,您确实应该这样做
这实际上是为了能够支持您的应用程序。如果没有PDB,当您的应用程序崩溃时,您的所有用户将能够告诉您应用程序崩溃的原始内存地址;但是有了PDB文件,您可以实际采取一些措施来解决错误。@Dan,分析的一部分是能够映射应用程序中的随机位置您的程序集返回到用户代码。否则,您将不知道什么代码是什么程序集。PDB对映射程序集>源代码(这是调试器需要它们的原因之一)非常好。好的,我想我会考虑调试的一部分。-我认为您是指某种版本的性能分析代码。@丹,分析是性能分析。除非它能将程序集映射回您实际编译的代码,否则它是无用的。这就是PDB的作用。实际上,它们可以很容易地向您发送内存转储(甚至不必是完整的,任何windows PC都可以生成一个),它至少会告诉您整个调用堆栈,通常是传递到最顶层函数调用中的变量