如何在不依赖符号文件的情况下调试crashdump?

问题描述

我正在从客户调试故障转储的应用程序具有不同的发布周期。因此,并非所有版本都维护PDB。每当我们从客户那里获得故障转储时,PDB文件都不可用。因此,很难分析故障转储。我使用Windbg分析故障转储。 Windbg可以选择强制使用不匹配的PDB。但是使用此选项,分析不会给出正确的调用堆栈。那么,还有其他方法可以用来分析故障转储而不依赖于PDB文件吗?这是解决我当前问题所必需的。或者,如何在不依赖PDB文件的情况下使用windbg。

解决方法

TL; DR:如果删除PDB,请不要抱怨。磁盘空间很便宜。 1 TB硬盘价格为40€。如果PDB为您节省了一个小时的工作,那么值得购买一个。启用NTFS压缩,因为PDB压缩得很好。

每当我们从客户那里获得故障转储时,PDB文件都不可用

显然,这是错误的策略。您可以将PDB从即将发布的版本中删除,但不能将发布给客户的版本删除。

由于这个原因,很难分析崩溃转储。

是的,是的。那么,为什么让您的生活更加艰辛呢?保留PDB。

Windbg可以选择强制使用不匹配的PDB。但是使用此选项,分析将无法给出正确的调用堆栈。

是的,因为那是正确的PDB的目的。

那么还有其他方法可以用来分析故障转储而不依赖PDB文件吗?

是的,您可以在没有PDB的情况下进行操作。但是,正如您所说,这非常困难。

或者在不依赖PDB文件的情况下如何使用windbg。

同样,没有PDB,也可以调试。也许您可能会学习汇编代码。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...