调试内核工具之-crash(内核源码编译、debug)

        本文以centos7的3.10.0-1160内核为例。

一、环境准备

1.1安装kexec-tools

        yum install kexec-tools

1.2设置crashkernel预留内存大小

      

        注:crashkernel的大小,直接影响是否能够存储生成的crash文件

        修改后,执行grub2-mkconfig -o /boot/grub2/grub.cfg配置到内核,reboot生效。

1.3修改kdump默认配置/etc/kdump.conf

        vi /etc/kdump.conf

        主要修改:path /var/crash(制定生成路径)

                        core_collector makedumpfile -c -l --message-level 1 -d 31(增加-c参数,代表压缩coredump文件)

                        default reboot(生成coredump后,重启系统)

1.4开启kdump服务

        systemctl start kdump.service //启动kdump

        systemctl enable kdump.service //设置开机启动

1.5测试kdump功能(检查kdump是否开启成功)

        systemctl is-active kdump.service(结果为active)

        service kdump status(结果为active)

1.6触发crash

        echo 1 > /proc/sys/kernel/sysrq

        echo c > /proc/sysrq-trigger

1.7重启后查看crash

        ls /var/crash/

二、crash分析准备

        crash分析Vmore,需要:1.crash工具

                                                 2.内核崩溃生成的Vmore

                                                 3.带调试信息的vmlinux

2.1安装crash

        yum install crash

2.2下载vmlinux

        若当前环境内核为镜像中自带内核,使用2.2.1方法下载vmlinux

        若当前环境内核为自己源码编译的,使用2.2.2方法编译vmlinux

2.2.1使用官网内核debug版本分析

2.2.1.1官网下载安装包

        http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-common-x86_64-`uname -r`.rpm

        http://debuginfo.centos.org/7/x86_64/kernel-debuginfo-`uname -r`.rpm

2.2.1.2安装

        rpm -ivh kernel-debuginfo-*.rpm

2.2.1.3查看vmlinux

        在/lib/debug/lib/目录下

2.2.2使用自己源码编译的内核分析

        内核源码编译方法见:3.10.0-1160内核源码编译

        注意:在编译内核时,需要打开以下编译配置项

  • kexec system call :CONFIG_KEXEC=y
  • sysfs file system support : CONFIG_SYSFS=y
  • Compile the kernel with debug info : CONFIG_DEBUG_INFO=Y
  • kernel crash dumps : CONFIG_CRASH_DUMP=y
  • /proc/vmcore support : CONFIG_PROC_VMCORE=y

        usr/src/linux-3.10.0-1160.el7/vmlinux为自己源码编译出来的vmlinux

三、crash分析

        以我自己编译的vmlinux为例

        crash /usr/src/linux-3.10.0-1160.el7/vmlinux /var/crash/127.0.0.1-2022-05-19-21\:13\:13/vmcore

        

        进入crash,开始分析:

        

crash有哪些命令,可参考以下链接

https://blog.youkuaiyun.com/weixin_42915431/article/details/105666507

参考连接:https://www.cnblogs.com/augusite/p/10613794.html

https://shaocheng.li/posts/2018/07/05/#5-crash-%E5%91%BD%E4%BB%A4

https://blog.youkuaiyun.com/ayang1986/article/details/121522938

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值