什么是.PDB文件的实际用途?

时间:2010-08-28 02:26:12

标签: c++ debugging

我一直在阅读有关PDB文件以及它们如何与调试有关但我为什么要在发货后保留pdb文件?如果有问题,我可以在我的机器上进行调试。我错过了什么?

4 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:2)

为了能够正确调试,您需要在PDB文件中维护的符号。 PDB也可以保留用于发布版本。

建议保留PDB的原因是不需要再次重建整个项目,这实际上是构建服务器上的多天进程。在非常大的项目中,这可能非常麻烦。维护PDB将帮助您快速从SCM检索二进制文件和符号,并且可以更快地解决提交的错误(如果有)。

答案 2 :(得分:1)

.pdb文件可以发送给客户以获得准确的堆栈跟踪。如果没有.pdb,所有堆栈跟踪都只包含内存地址,并且“手动”计算这些地址对应的函数是很痛苦的。但是,如果您有.pdb文件,则调试器可以使用符号重建堆栈跟踪,这样可以使生活更轻松。

此外,有时您无法在计算机上重现问题,唯一可以查看错误的方法是调试客户的计算机。这取决于您与客户的特殊关系,当然是否可能......

答案 3 :(得分:1)

在我的工作中重建或调试客户崩溃时,我们的PDB会生存和死亡。我已经检查了多年前和几年的二进制文件的崩溃转储文件。谢天谢地,我们在这些年里一直保持着我们的PDB。如果没有PDB,你只需要花几个月的时间调试一个故障转储,就可以亲吻你的时间。而如果你有PDB,那么在调试minidump时很容易导航堆栈。

并确保保留与二进制文件和PDB相对应的源代码副本。很高兴使用版本控制。但有时你并不总是乐于调整一切。

相关问题