无法在 centos7 上设置故障转储以调试内核

Posted

技术标签:

【中文标题】无法在 centos7 上设置故障转储以调试内核【英文标题】:could not to setup crash dump on centos7 for debug kernel 【发布时间】:2015-11-06 11:33:44 【问题描述】:

我正在尝试设置 kdump 来为 kernel-3.10.0-123.el7 生成 vmcore。对于 perf 内核 kernel-3.10.0-123.el7.x86_64.rpm 我设置了 kdump 并且 kdump 也可以正常工作,生成 vmcore。 然后我安装了

内核调试-3.10.0-123.el7.x86_64.rpm

使用 yum install kernel-debug-3.10.0-123.el7.x86_64.rpm 和 kdump 工作正常。

但是我没有 vmlinux 来读取调试内核的 vmcore。 然后我使用 rpmbuild 从源代码构建源代码

kernel-3.10.0-123.el7.src.rpm

但我在

中看到了 vmlinux

~/rpmbuild/BUILD/kernel-3.10.0-123.el7/linux-3.10.0-123.el7.x86_64/vmlinux

仅用于 perf 内核,不适用于调试内核

所以从 ~/rpmbuild/SOURCES

我复制了 linux-3.10.0-123.el7.x86_64.tar.xz 并使用了 kernel-3.10.0-x86_64-debug.config as .config 获取vmlinux

当我使用这个新构建的 vmlinux 调试内核崩溃时,它抛出了内核版本不匹配的错误。现在我被卡住了。

请帮助我在 centos7 上使用调试内核和调试 vmlinux 设置 kdump。

【问题讨论】:

你应该使用你的本机系统内核vmlinux,这是什么问题? kernel-3.10.0-123.el7.x86_64.rpm 默认内核是centos7自带的...我在虚拟机上安装了centos7的另一件事 【参考方案1】:

由于我是 centos 新手,我不知道调试包有 vmlinux。我已经使用以下命令安装了调试 rpm:

yum --enablerepo=debug install kexec-tools crash kernel-debug kernel-debuginfo-`uname -r`

我注意到 kernel-debuginfo-3.10.0-123.el7.x86_64 的位置有 vmlinux:

/usr/lib/debug/lib/modules/3.10.0-123.el7.x86_64/vmlinux

所以我得到了 vmlinux。

此 vmlinux 可与非调试内核一起使用。

【讨论】:

以上是关于无法在 centos7 上设置故障转储以调试内核的主要内容,如果未能解决你的问题,请参考以下文章

在 Windows 上调试 linux 故障转储

windbg 怎么调试dmp文件

如何读取小型转储?

如何在 CrashRpt 中配置电子邮件设置以发送故障转储?

linux内核崩溃转储创建失败

关于内核转储(core dump)的设置方法