SysDump以及Crash工具的使用

本文主要介绍sysdump是什么,以及如何利用工具抓取fulldump,再利用crash工具分析fulldump。

SysDump

SysDump简介

SysDump即Dump system memory, 是一种转存储机制, 是将发生异常时的内存信息、 寄存器信息等有效信息转存为文件, 以便于借助分析工具分析问题现场。在系统发生诸如Kernel crash等异常时, 在Kernel中完成flush cache等处理后, 重启进入Uboot中完成所有数据的保存, 保存过程会有相应屏幕提示, 完成后根据屏幕提示重启手机, 导出异常数据文件进行分析。
SysDump分为FullDump和MiniDump两个子功能, 两个子功能是互不影响的。
• FullDump保存完整DDR信息, 可以支持两种存储路径Dump2SD和Dump2PC。
• MiniDump保存少量信息到单独的SysDumpdb分区, 然后再由native sevice 程序将分区保存的raw数据整理解析后放置到/sdcard/MiniDump路径下。在资源允许的条件下, 优先选择保存分析FullDump日志, 因为其保存了完整的现场信息快照, 更有利于深入分析问题。

如何触发SysDump

在这里插入图片描述
FullDump功能在UserDebug版本上默认使能,在User版本上默认关闭。
FullDump功能使能/禁止可以在“工程模式”中设置,具体如下:
##手机暗码##) -->Debug&LOG–>YLog–>Settings–>SysDump Enable。

利用工具抓取FullDump

支持Dump2PC功能的设备发生SysDump, 在Dump2SD失败后会自动尝试Dump2PC, 屏幕会给出打印信息, 等待连接PC。 此时并未开始dump, 只有连接成功后设备才会和PC开始握手。
使用USB线连接设备和PC,此时如果设备可以正常检测到USB线插入,则会在屏幕上有"usb cable isinserted…"的打印提示。测试前如果有连接USB线,需要重新拔插才能正常识别。

在这里插入图片描述
此时我们打开logel抓取工具,点击下图这个绿色的灯,就可以完成fulldump的抓取。
在这里插入图片描述

Crash

Crash的安装

Crash工具可以在官网去下载,下载后对其进行解压安装

  tar -xvzf crash-5.0.0.tar.gz 
  cd crash-5.0.0 
  ./install

Crash的使用

首先我们要找到vmlinux,这是编译时生成的最原始的内核文件,用于kernel debug,获取路径为:out/target/product/xxxx/obj/Kernel/vmlinux

然后我们将之前收集到的的FullDump文件中的 sysdump.core全部合成为一个文件合成命令如下:

cat sysdump.core.* > vmcore

将它们共同拷贝到相同的目录,建议放在Crash工具目录下

注意:如果 vmlinux 和 sysdump 文件对应的 kernel 版本不符,则 crash 工具会报错,此时可以执行以下命令:

strings vmlinux | grep gcc
strings all | grep gcc

分别得到 vmlinux 和 all(sysdump)的版本.进而获取正确的 vmlinux 以供分析。

此时我们就可以利用工具来分析文件,文件分析命令:

//crash 工具和命令行格式可能会随着平台不同而变化
//根据实际情况输入相应的命令
crash_arm -m phys_base=0x80000000 vmlinux vmcore
crash_x86_64 -m phys_base=0x34200000 vmlinux vmcore
crash_arm64 -m phys_offset=0x80000000 vmlinux vmcore

进入 crash 工具后可以用 help 命令显示出 crash 所支持的所有命令:
crash_x86_64> help
一般我们使用crash工具主要对以下关键词进行分析:

crash_arm> log |grep oops
crash_arm> log |grep lockup
crash_arm> log |grep BUG
//BUG_ON 类型的 panic 是比较好分析的,因为 log 明确指出了出错函数的位置

总结

本文介绍了 Linux 下的sysdump这一种转存机制,以及如何使用 crash 工具开对内存转储文件进行分析。内核虽然复杂,但通过结合使用内核的内存转储文件和 crash 分析工具,可以轻松的找到内核问题的所在。

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值