内核工程师必备工具--crash
2018-02-28 20:08
197 查看
熟悉windows的朋友都知道系统如果出现蓝屏了,会使用windbg工具来分析coredump文件,那么linux呢?linux主流解决方案是kdump+crash, kdump用来在系统crash的时候生成core dump文件,而crash工具就是用来分析这个core dump文件的。
系统环境
centos 7.2
crash工具介绍
什么是crash?
crash是一个用于交互式地分析正在运行的Linux系统或者kernel crash后的core dump数据的工具。
官方资料:
http://people.redhat.com/anderson/crash_whitepaper/
http://people.redhat.com/anderson/help.html
准备环境
安装 kernel debuginfo 内核符号文件
# debuginfo-install kernel
# rpm -qa |grep kernel //查看是否安装成功
kernel-debuginfo-3.10.0-327.el7.x86_64
kernel-debuginfo-common-x86_64-3.10.0-327.el7.x86_64
查看内核所有模块的symbol文件的安装路径
# rpm -ql kernel-debuginfo-3.10.0-327.el7.x86_64
查看对应的内核源码安装路径
# rpm -ql kernel-debuginfo-common-x86_64-3.10.0-327.el7.x86_64
本地live调试
# rpm -ql kernel-debuginfo-3.10.0-327.el7.x86_64 |grep vmlinux
/usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
# crash /usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
调试分析kernel dump文件
# find /var/crash -name "vmcore"
/var/crash/127.0.0.1-2017-12-27-16:12:03/vmcore
#crash /var/crash/127.0.0.1-2017-12-27-16:12:03/vmcore /usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
Crash 常用命令总结
表1-1 用我们可以理解的格式查看指定内存地址数据
表1-2 查看系统状态
表1-3 进程环境相关命令
表1-4 辅助命令
系统环境
centos 7.2
crash工具介绍
什么是crash?
crash是一个用于交互式地分析正在运行的Linux系统或者kernel crash后的core dump数据的工具。
官方资料:
http://people.redhat.com/anderson/crash_whitepaper/
http://people.redhat.com/anderson/help.html
准备环境
安装 kernel debuginfo 内核符号文件
# debuginfo-install kernel
# rpm -qa |grep kernel //查看是否安装成功
kernel-debuginfo-3.10.0-327.el7.x86_64
kernel-debuginfo-common-x86_64-3.10.0-327.el7.x86_64
查看内核所有模块的symbol文件的安装路径
# rpm -ql kernel-debuginfo-3.10.0-327.el7.x86_64
查看对应的内核源码安装路径
# rpm -ql kernel-debuginfo-common-x86_64-3.10.0-327.el7.x86_64
本地live调试
# rpm -ql kernel-debuginfo-3.10.0-327.el7.x86_64 |grep vmlinux
/usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
# crash /usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
调试分析kernel dump文件
# find /var/crash -name "vmcore"
/var/crash/127.0.0.1-2017-12-27-16:12:03/vmcore
#crash /var/crash/127.0.0.1-2017-12-27-16:12:03/vmcore /usr/lib/debug/lib/modules/3.10.0-327.el7.x86_64/vmlinux
Crash 常用命令总结
命令 | 命令功能描述 |
struct | 以指定的结构体来格式化显示内存数据 |
union | 以指定的联合体来格式化显示内存数据 |
* | 替代struct和union命令,因为不去判断数据是struct还是union类型,直接用这个命令让crash自己判断 |
p | 就是gdb的print,用来打印内核变量 |
whatis | 通过指定的结构体名称、联合体名称、typedef重定义的名称以及带有语法信息的变量,找到其对应的类型定义 |
sym | 用来做内存地址到符号或符号到内存地址的转译 |
dis | 用来反汇编指定内核函数或一段内存 如反汇编一段用户空间代码: dis -u 7f6296b79000+0x3004 22 |
bt | 显示当前会话的调用栈 |
dev | 查看字符、块设备io端口和内存映射 |
files | 当前进程打开的所有文件 |
fuser | 反向查看一个文件目前被哪些进程打开 |
irq | 查看中断相关 |
kmem | 查看内存slab或内存统计等 |
log | 相当于dmesg命令 |
mach | cpu相关 |
mod | 内核模块信息以及加载模块对应的symbol |
mount | 查看挂载文件系统的相关结构体数据 |
net | 能够找到进程打开的socket,也能引用指定socket的进程,进程的网络名字空间 |
ps | 进程相关 |
pte | 表页相关,查看页表项 |
runq | 系统负载 |
waitq | 处于等待的进程 |
sig | 异常事件处理相关 |
swap | Swap设备相关信息 |
sys | 查看系统调用表里的信息 |
task | 查看task数据结构 |
timer | 显示timer队列中的信息 |
vm | 看一个进程的虚拟内存布局 |
vtop | 虚拟地址转换为物理地址 |
命令 | 命令功能描述 |
alias | 里面有些快捷命令 |
foreach | 前缀每一个进程或cpu都轮询一次 |
gdb | 执行gdb中的命令 |
repeat | 重复执行后面的命令 |
set | 设置当前默认进程环境 如切换当前进程: crash>set 35454 crash>set |
q/exit | 退出crash |
extend | 加入扩展模块 |
命令 | 命令功能描述 |
ascii | 把数字转换成ascii |
btop/ptob/ptov | 物理内存与虚拟地址转换 |
eval | 一个简单计算器 |
search | 重复执行后面的命令 |
rd | 显示一块内存,如: crash> rd -8 0xffffffffa0669000 100 ffffffffa0669000: 0f 1f 44 00 00 83 e6 f1 55 83 fe 01 19 c0 48 89 ..D.....U.....H. ffffffffa0669010: e5 f7 d0 83 e0 ea 5d c3 0f 1f 84 00 00 00 00 00 ......]......... ffffffffa0669020: 0f 1f 44 00 00 55 48 8b 81 68 04 00 00 8b 7f 2c ..D..UH..h....., ffffffffa0669030: 48 89 e5 4c 8b 80 40 09 00 00 e8 51 e0 fc ff 5d H..L..@....Q...] ffffffffa0669040: c3 0f 1f 44 00 00 66 2e 0f 1f 84 00 00 00 00 00 ...D..f......... ffffffffa0669050: 0f 1f 44 00 00 55 48 8b 82 68 04 00 00 8b 7f 2c ..D..UH..h....., ffffffffa0669060: 48 89 e5 4c |
wd | 写一块内存 |
相关文章推荐
- 内核调试工具 — kdump & crash
- 内核调试工具 — kdump & crash
- Web工程师必备的18款工具
- Web工程师必备的18款工具
- 新网络工程师必备的工具
- 如何使用crash工具分析Linux内核崩溃转储文件
- 内核调试工具 — kdump & crash
- Linux运维工程师必备的80个监控工具全集(上)
- Web工程师必备的18款工具
- 内核调试工具 — kdump & crash
- J2EE工程师必备工具和技术
- NodeJS 工程师必备的 8 个工具
- Web工程师必备的18款工具
- 内核崩溃kdump和crash分析工具
- Web工程师必备的43款可视化工具
- 电脑硬件, 韧体, 驱动工程师必备工具
- Web工程师必备的43款可视化工具
- 内核调试工具 — kdump & crash
- Web工程师必备的43款可视化工具
- 新网络工程师必备的工具