Google 交叉编译平台应用程序上的 crashpad。无法读取 Ubuntu 中的 dmp 文件

Google crashpad on a cross-compilation platform application. Cannot read dmp file in Ubuntu

我有一个小的 qt project 我想跟踪一个段错误(这是一个例子,为了测试目的手动添加了段错误,在实际项目中我不知道剩下的段错误那里)。我决定使用 google crashpad,这样我就可以创建小型转储文件,然后在我的计算机上跟踪问题。我在 windows 中通过示例项目成功地做到了这一点。但是,我无法打开 Linux 中的 dmp 文件来调试它们。

我尝试在部分使用minidump-2-core as explained in this blog,在Linux部分使用minidump-2-core。然而,当我 运行 这个命令时,我得到以下错误: This minidump was not generated by Linux or NaCl. 显然我使用同一台计算机 Ubuntu 18.04 运行 生成 dmp 文件并将其转换为核心文件。

知道如何将 dmp 文件转换成可以放入 gdb 进行调试的文件吗?或者一般来说,如何处理由 google crashpad 在 linus 中创建的这些文件?

您需要构建 minidump_stackwalk,这是来自 Breakpad 存储库的命令行工具。您还需要使用 dump_syms 生成 .sym 文件,这是 Breakpad 存储库中的另一个工具。

生成 .sym 文件后,您需要按照约定 /path/to/symbols/folder/MODULE_NAME/MODULE_ID/MODULE_NAME.sym.

将它们放置在磁盘上

一旦将符号文件放置在正确的文件夹结构中,您就可以调用 minidump_stackwalk,这将输出一个符号化的堆栈跟踪和一个在运行时加载的模块列表:

./minidump_stackwalk -m /path/to/minidump.dmp /path/to/symbols/folder

有关如何使用 minidump_stackwalk 的更多信息,请参见 here

有关如何使用 dump_syms 的更多信息,请参见 here