什么是Crash?
当linux系统内核发生崩溃的时候,可以通过KEXEC+KDUMP等方式收集内核崩溃之前的内存,生成一个转储文件vmcore。内核开发者通过分析该vmcore文件就可以诊断出内核崩溃的原因,从而进行操作系统的代码改进。那么Crash就是一个被广泛使用的内核崩溃转储文件分析工具。
对调试来讲,gdb是非常适合的,但gdb始终是调试native的工具,不支持kernel信息显示,比如task信息之类的。crash补足了这个短板,由Dave Anderson开发和维护的一个内存转储分析工具,是基于GDB开发的 (GDB适用于用户进程的coredump,而Crash扩展了GDB,使其适用于linux kernel coredump),目前它的最新版本是7.2.3。在没有统一标准的内存转储文件的格式的情况下,Crash工具支持众多的内存转储文件格式,包括:
Live linux系统
kdump产生的正常的和压缩的内存转储文件
由makedumpfile命令生成的压缩的内存转储文件
由Netdump生成的内存转储文件
由Diskdump生成的内存转储文件
由Kdump生成的Xen的内存转储文件
IBM的390/390x的内存转储文件
LKCD生成的内存转储文件
Mcore生成的内存转储文件
而MTK在KE时会抓取full dump文件:SYS_COREDUMP,则可以用crash来调试。
编译crash
安装/使用方法
crash是开源工具,因此需要自己下载代码编译成linux可执行文件。
搭建crash分析kernel ramdump平台
[DESCRIPTION]
ramdump是分析kernel crash的资料ÿ