CentOS 7 内核调试工具

有时候会碰到内核panic(内核崩溃)的问题,需要定位具体的原因,对于内核panic的问题定位稍微研究了下。

需要先了解下相关的概念:

默认发行的Centos系统安装了kexec-tools,关于kexec以及kdump的安装与配置不需要手动执行。

使用crash分析

当系统panic时,会自动生成vmcore以及vmcore-dmesg.txt,目录默认在/var/crash/(配置文件中的默认配置)

上层文件夹命名规则为%HOST-%DATE

[root@localhost 127.0.0.1-2019-07-06-23:33:43]# pwd
/var/crash/127.0.0.1-2019-07-06-23:33:43
[root@localhost 127.0.0.1-2019-07-06-23:33:43]# ll
total 73840
-rw------- 1 root root 75570158 Jul  6 23:33 vmcore
-rw-r--r-- 1 root root    37982 Jul  6 23:33 vmcore-dmesg.txt

crash命令:

crash使用gdb作为内部引擎,语法类似于gdb:

你可以输入help显示所有支持的命令;

你可以输入help <命令名>显示这个命令的帮助。

crash命令可以和外部得命令结合使用,比如:log | tail -n 20。

通过crash工具提供的相关命令可以找到触发系统内核panic的代码,从社区寻找相关的patch进行合入解决。但是有些触发panic的命令并非是真正的原因,例如系统的资源持续被占用最终导致内核panic,需要根据系统日志以及系统相关操作来综合分析根因。

参考文档:

内核调试工具 — kdump & crash

CRASH工具介绍

Table of Contents