本篇文章主要介绍Android开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
有专业问题或者需要更多干货可以进群找柯南老师
链接:https://jq.qq.com/?_wv=1027&k=6W0g8p3E
一、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工具支持众多的内存转储文件格式,包括:
1.Live linux系统
2.kdump产生的正常的和压缩的内存转储文件
3.由makedumpfile命令生成的压缩的内存转储文件
4.由Netdump生成的内存转储文件
5.由Diskdump生成的内存转储文件
6.由Kdump生成的Xen的内存转储文件
7.IBM的390/390x的内存转储文件
8.LKCD生成的内存转储文件
9.Mcore生成的内存转储文件
而MTK在KE时会抓取full dump文件:SYS_COREDUMP,则可以用crash来调试。
二、 搭建Crash 分析kernel ramdump平台
-
Crash 官网
-
编译前确保必要的组件(ncurese和zlib),如果没有需要