openEuler x86_64 extract-vmlinux生成内核vmlinux 源码编译生成vmlinux 配置kdump crash分析内核崩溃kernel panic

测试环境、配置

采用VirtualBox虚拟机测试

CPU信息

 操作系统及内核信息

 系统默认开启了kdump,查看服务状态

 查看内核命令行参数

对应/boot/grub2/grub.cfg

 vmcore生成路径配置/etc/kdump.conf

 测试触发内核崩溃

echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

 效果

vmlinux

方案一:extract-vmlinux

  说明:软件包kernel-devel,提供了/usr/src/kernels/5.10.0-60.18.0.50.oe2203.x86_64/scripts/extract-vmlinux,该脚本在x86_64平台下可以从/boot/vmlinuz-5.10.0-60.18.0.50.oe2203.x86_64解压出vmlinux

解压出vmlinux

 

注意:在x86_64平台下,vmlinux是一个elf格式文件

方案二:源码编译出vmlinux

  软件包kernel-source提供了当前版本内核源码,安装后源码路径

/usr/src/linux-5.10.0-60.18.0.50.oe2203.x86_64

安装编译依赖

yum install -y kernel-source gcc make elfutils-libelf-devel dwarves flex bison openssl-devel

配置、编译

cd /usr/src/linux-5.10.0-60.18.0.50.oe2203.x86_64
cp /boot/config-5.10.0-60.18.0.50.oe2203.x86_64 .config
make oldconfig
make -j6

编译出的vmlinux

内核崩溃分析

dmesg信息

cat /var/crash/127.0.0.1-2022-12-20-09\:05\:41/vmcore-dmesg.txt

 vmcore信息

crash分析

安装crash

yum install crash

extract-vmlinux版(失败)

报错退出

源码编译版(报错)

报错退出

源码编译版(--minimal 成功)

 注意提示

NOTE: minimal mode commands: log, dis, rd, sym, eval, set, extend and exit

log 查看dmesg

 miminal有价值功能太少

安装编译的内核

cd /usr/src/linux-5.10.0-60.18.0.50.oe2203.x86_64
make modules -j6
make modules_install
make install

重启

reboot

默认用新安装的内核启动

 重新触发内核崩溃

echo 1 > /proc/sys/kernel/sysrq
echo c > /proc/sysrq-trigger

采用编译内核做crash分析

正常打印出崩溃时内核信息

bt查看调用堆栈

 bt -slf 显示函数偏移量,方便对应源码

 查看ffffffffa81e38b1地址前的反汇编 dis -r ffffffffa81e38b1

  查看ffffffffa81e38b1地址后的反汇编 dis -f ffffffffa81e38b1

 bt -c cpuid查看制定cpu调用堆栈,如bt -c 0

bt -a 显示所有cpu调用堆栈

 rd读取内存值

查看cpu0进程

 查看内核进程

 其他参考

系统崩溃 - crash工具介绍 - 简书

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值