打开 linux-crashdump 转储并崩溃?

打开 linux-crashdump 转储并崩溃?

因此,我一直在尝试调试运行 Ubuntu-Server 16.04 的服务器上奇怪的间歇性内核崩溃,这个问题困扰了我很长时间,因此我安装并设置了linux-crashdump按照以下说明进行安装和设置Ubuntu wiki 崩溃转储秘诀

等待问题再次出现之后,它linux-crashdump已经完成了它的工作并生成了崩溃转储,但现在我不知道如何使用它!

Ubuntu 指南提供了两种查看它们的方法,要么使用crash,要么使用apport-retrace,但这两种方法都不能按描述的方式工作。

apport-retrace仅返回:

ERROR: report file does not contain the required fields

同时,对于crash,我已经按照建议下载了带有调试信息的适当图像apt-get install linux-image-$(uname -r)-dbgsym,然后运行以下命令:

crash /usr/lib/debug/boot/vmlinux-4.4.0-93-generic /var/crash/linux-image-4.4.0-93-generic-201709131146.crash

然而这会导致以下错误:

crash: linux-image-4.4.0-93-generic-201709131146.crash: not a supported file format

现在查看linux-crashdump转储的正确方法是什么?我是否遗漏了指南中未包含的步骤?

答案1

所以我明白了;似乎崩溃转储的实际内容.crash根本不在文件中,而是在文件夹内。

因此,我的文件夹的相关内容/var/crash如下所示:

/var/crash/
    201709131146/
        dmesg.201709131146
        dump.201709131146
    linux-image-4.4.0-93-generic-201709131146.crash

所以我需要运行的是:

crash /usr/lib/debug/boot/vmlinux-4.4.0-93-generic /var/crash/201709131146/dump.201709131146

这(最终)给了我一个有用的堆栈跟踪和有关出现问题的其他详细信息。

答案2

您需要使用 apport-unpack。然后使用 gdb 和 backtrace。网上有很多关于如何使用 apport-unpack 的很好的例子。

相关内容