分类:转载 日期:2025-03-19 作者:caocaofff 浏览:35
查看/etc/kdump.conf 的path参数确认日志存放目录,收集故障时间的日志文件如:
新建或编辑/etc/yum.repos.d/CentOS-Debuginfo.repo 加入如下内容:
[base-debuginfo]
name=CentOS-$releasever - Debuginfo
baseurl=http://debuginfo.centos.org/$releasever/$basearch/
gpgcheck=1
enabled=1
查看内核版本:
uname -r
清理 Yum 缓存以确保使用最新的仓库信息,然后安装相同内核版本的vmlinux:
sudo yum clean all
sudo yum --enablerepo=base-debuginfoinstall kernel-debuginfo-3.10.0-1160.el7.x86_64 -y
指定当前版本vmlinux读取vmcore:
sudo crash /usr/lib/debug/lib/modules/$(uname -r)/vmlinux vmcore
log:使用命令查看系统发生BUG的详细信息,包括无法处理的空指针引用错误。
bt:使用命令查看堆栈信息,显示了进程ID(PID)、任务结构地址(TASK)、CPU编号及进程名称(COMMAND)。
ps:使用命令显示系统中所有进程的信息,包括进程 ID、状态、优先级等。
files:使用命令列出进程打开的文件描述符
vm: 显示虚拟内存信息
mount: 显示挂载的信息
help: 显示可用命令的列表
堆栈信息查看:
crash视图下执行bt查看堆栈信息:
PID: 17114 TASK: ffff8cab78456300 CPU: 5 COMMAND: "insmod"
表明系统在尝试加载模块(insmod命令)时遇到了一个致命错误,导致了系统崩溃。
crash_module: loading out-of-tree module taints kernel crash_module:
module verification failed: signature and/or required key missing -
tainting kernel
这段表明该模块是非官网模块,没有经过适当的签名验证。
[exception RIP: init_module+8]
表明故障寄存器位置在init_module函数的第8个字节处,需要查看代码对应函数位置是否存在问题。
日志信息查看:
crash视图下执行log查看日志信息:
BUG: unable to handle kernel NULL pointer dereference at 00000000
IP:[] some_faulty_function+0x23/0x50
内核检测到一个空指针引用, 表示在 some_faulty_function 函数中的偏移量为 0x23 处发生错误。
Modules linked in: raid_module scsi_mod libata CPU: 0 PID: 1234 Comm:
some_process Not tainted 5.4.0-42-generic #46-Ubuntu Hardware name:
Manufacturer Model/Type
当前加载的模块:raid_module scsi_mod libata,硬件的基本信息:Manufacturer Model/Type
从模块和硬件信息查看可以确认是raid卡引起的问题,可以使用硬件诊断工具检查RAID控制器、硬盘等设备的状态。
CC版权: 本篇博文采用《CC 协议》,转载必须注明作者和本文链接