“.PDB文件”有什么实际用途?

6

我一直在了解PDB文件以及它们与调试的关系,但是为什么我要在发布后保留pdb文件呢?如果出现问题,我可以在自己的计算机上进行调试。我错过了什么吗?

4个回答

3

PDB文件包含调试信息。如果您至少保留它们用于软件的发布版本,您可以调试客户可能遇到的任何崩溃。您不需要发送PDB,只需让他们使用Windows收集崩溃转储(.dmp)。然后,您可以在例如WinDbg中打开转储并调试问题。


2
为了能够正确地进行调试,您需要PDB文件中维护的符号。PDB也可以用于发布版本。
建议保留PDB文件的原因是不必再次重建整个项目,这通常在构建服务器上需要多天时间。在非常大型的项目中,这可能非常麻烦。维护PDB将帮助您快速从SCM检索二进制文件和符号,并且可以更快地解决已提交的错误(如果有)。

2
我们在重建或调试客户崩溃时,完全依赖于我们的PDB文件。我曾经检查过多年前的二进制崩溃转储文件,感谢上帝我们一直保留着这些年来的PDB文件。如果没有PDB文件,你将浪费数月时间来调试一个崩溃转储文件。而如果你有PDB文件,就非常容易在调试minidump时导航堆栈。
请确保保留与二进制文件和PDB文件对应的源代码副本。最好使用版本控制进行管理,但有时您无法拥有这种奢侈品来使所有东西都对齐。

1

可以将.pdb文件发送给客户以获取准确的堆栈跟踪。如果没有.pdb文件,所有的堆栈跟踪都只包含内存地址,手动确定这些地址对应哪些函数是很麻烦的。但是如果有.pdb文件,调试器可以使用符号重构堆栈跟踪,这样就方便多了。

此外,有时您无法在自己的计算机上复现问题,唯一的方法是在客户的计算机上进行调试。当然,这取决于您与客户的具体关系是否可行...


5
实际上,他们不需要pdb文件 - 你需要,客户只需要把转储文件发送给你。你需要将它与你的.pdb文件一起加载到调试器中。 - Martin Beckett
1
对于本地应用程序而言,将.pdb文件发送给客户是危险的,因为它们包含的信息比托管应用程序的.pdb文件多。因此,您应该要求客户提供没有pdb文件的崩溃转储,然后使用pdb文件在您的机器上进行分析。 - Lex Li

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接