如何在不依赖符号文件的情况下调试故障转储?

How to debug crashdump without having dependency to symbol files?

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

TL;DR:如果您删除了 PDB,请不要抱怨。磁盘 space 很便宜。一个 1 TB 的硬盘是 40 欧元。如果 PDB 可以为您节省一个小时的工作时间,那么就值得购买一个。打开 NTFS 压缩,因为 PDB 压缩得很好。

whenever we get a crashdump from customers the PDB files are not available

显然,这是错误的策略。您可以丢弃来自夜间构建的 PDB,但不能丢弃提供给客户的版本。

Due to this, it's difficult to analyze crash dumps.

是的,没错。那么,为什么要让你的生活变得格外艰难呢?保留 PDB。

Windbg has the option to forcefully use unmatched PDBs. But with using this option the analysis is not giving right call stacks.

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

So is there any other way through which Crashdumps can be analyzed without having a dependency on PDB files?

是的,您可以在没有 PDB 的情况下做到这一点。但是,正如你所说,它特别难。

Or how windbg can be used without having a dependency on PDB files.

同样,无需 PDB 也可以进行调试。也许你可以学习汇编代码。