崩溃转储文件是否需要崩溃时正在运行的本地文件?

Does a crash dump file need the local file it was operating on at time of crash?

我正在分析一个崩溃转储文件,该文件在加载或保存某个(本地)数据文件时崩溃。调用堆栈显示它已在崩溃时执行加载该文件。

我想知道我是否需要同时拥有此数据文件和转储文件才能准确分析崩溃?它会以任何方式影响指针,例如文件名等吗?

不,你不需要它。您将使用 gdb 分析的内容是您的应用程序在崩溃时使用的内存快照,以及您的应用程序。 因此,只需要拥有核心文件和您的应用程序(二进制 + 所需的库;在最好的情况下,您将需要它们的源代码以便能够将调试信息与算法相关联)。所有指针、变量和其他都将根据核心转储的时刻具有值。

更新:但是,您也可以从调试器中以交互方式 运行 您的应用程序并逐步执行直到崩溃。那么是的,您将需要您的文件。

这取决于故障转储类型和创建故障转储时使用的标志。完整内存转储包含应用程序在崩溃时拥有的所有内存。 MINIDUMP_TYPE 标志让您了解什么是可能的。对于 C++,任何转储通常都有帮助,对于 .NET 完整内存是首选。

除了转储之外,您很少需要额外的文件,除了包含有关源文件和行号的信息的 PDB 文件。