跳转至

Crash工具

crash 简介

crash 是一款可用来离线分析 linux 内核转存文件的工具,它整合了部分 gdb 的功能,可以查看堆栈、dmesg 日志、内核数据结构、反汇编等等,功能非常强大。crash 可支持多种工具生成的转存文件格式,例如 kdump、netdump、diskdump 等,而且还可以分析虚拟机 Xen 和 Kvm 上生成的内核转存文件

crash 与 linux 内核紧密耦合,需要与 linux 内核匹配。如果你的内核版本较新,crash 很可能无法解析,可以尝试安装最新的 crash 工具

使用 crash 来调试 vmcore,至少需要两个参数:

  • 未压缩的内核映像文件 vmlinux。认位于 /usr/lib/debug/lib/modules/$(uname -r)/vmlinux,由内核调试信息包提供
  • 内存转储文件 vmcore,由 kdump 或 sysdump 转存的内核奔溃现场快照

(1)安装 kernel-debug

# 提供调试头文件
dnf install -y --enablerepo="base-debuginfo" install kernel-debuginfo

(2)进入 core 文件所在路径, 执行如下命令:

crash vmcore /usr/lib/debug/lib/modules/<对应内核调试文件>/vmlinux

常用命令

查看系统中所有进程的信息

ps

查看进程的内存映射情况

vm

查看所有CPU的状态

cpu

查看内核模块信息

mod

查看某个函数的调用栈

bt func_name

列出所有可用的命令

help

分析崩溃发生的位置

bt -a

查看内存使用信息

kmem -i

常见问题

  • vmcore 和 vmlinux 出现不匹配问题的解决方法

PAE 物理地址扩展,软件包 kernel-PAE-debuginfo

参考文档