Ubuntu操作系统使用kdump

  1. 背景

笔者计算机使用Ubuntu 20.04操作系统和Intel 11400 CPU。本文主要记录如何在Ubuntu操作系统上使用自编内核并使用kdump转存系统信息并使用crash工具进行分析。自编内核版本为5.15.133。

我们知道crash工具需要dump文件和vmlinux文件作为分析的依据,所以本文主要围绕这两个文件的获取展开。

2.准备vmlinux

要使用kdump机制,内核编译的时候必须选中CONFIG_DEBUG_INFO选项。对应的,在menuconfig的时候要选中对应的条目:

Kernel hacking ---> Compile-time checks and compiler options ---> Compile the kernel with debug info

这样在编译后不但会有内核镜像的deb包,还会诞生包含debug信息的deb包。

在笔者的计算机上,生成产物包括:

第一个和第四个deb包根据需求安装,第二个和第三个需要安装。

安装后进入系统,首先用uname产看内核信息是否匹配,然后到/usr/lib/debug目录下看看是否有对应的信息产生:

可以看到产生了vmlinux的文件连接。使用crash分析的第一个要素准备完毕。

3.准备dump信息

关于这部分内容,Canonical官方有个网页作为指导:

https://ubuntu.com/server/docs/kernel-crash-dump

主要需要做两件事。第一件事安装,第二件是配置。

首先安装工具包:

其次进行配置:

重新启动后可以看到cmdline参数有了明显的变化:

可以看到多处用于转储的配置条目crashkernel=512M-:192M。

下面触发kdump机制获取dump文件。笔者这里只做简单的手动触发。执行下面的命令:

执行后系统重新启动,在/var/crash下面会生成一个以时间戳命名的文件夹,文件夹中包含dump文件。dump文件命名为dump.timestamp。

4.用crash分析

使用下面命令即可即可使用crash命令进行分析:

crash /path/to/dumpfile /path/to/vmlinux

但是可能遇到gdb版本不匹配的问题。在笔者的计算机上,通过apt命令安装的gdb版本比较旧,无法正确匹配crash的使用。这种情况可以从github上重新下载自己编译最新版本的crash工具。地址为:GitHub - crash-utility/crash: Linux kernel crash utility

最终,输入正确的crash命令,进入调试界面:

执行个bt命令:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值