log分析
抓串口log方式
打开串口log, 通过串口线获取
使用fastboot oem uart-enable 打开串口log
minicom -c on -C
注意波特率要设置正确, 可以问下相关的底层或适配组的同事. 如果波特率不对, 可能窗口没有任何输出或输出乱码
logfs获取
会保存最近5份开机(包括recovery子系统)的串口log
1 | mount /dev/block/bootdevice/by-name/logfs /data/log |
获取kernel log
高通sm8250平台可以通过电量下+电源键(长按3s)进入ramdump模式
进入后, 连接qpst工具抓取即可. kernel log会优先输出
fastboot获取kernel log
使用fastboot_log工具获取, 该工具在客户端加入了lkmsg指令, 需要手机侧的fastboot支持(较新的机型支持)
1 | ./fastboot_log oem lkmsg > last_kmesg1 |
mtk机型开机log
以last kmsg为例,在重启前,printk()一方面将kernel log格式化输出到ring buffer里面去,同时送到pstore console中去(console write接口将log实时写入console ram zone中)。
一旦发生warm reset,kernel log将会停止记录到pstore console,最后一段log(即前0xd0000 bytes)就会驻留在console ram zone中。
重启后通过cat sys/fs/pstore/console-ramoops即可获取last kmsg。
dump分区
重启进recovery log
进入小米助手后, 屏幕出现三个按钮, 选择最后一项, 连接小米助手
pc 端 adb pull /cache/ . 抓取log
其中cache/recovery/last_log 中保存了进recovery的trigger reason
cache/mqsas/null_RescuePartyLog_* 中保存了重启前的logcat抓出的android层的log
可以使用 ota_log_analyze.py
工具简单分析下
1 | ota_log_analyze.py cache (cache是 adb pull /cache/ . 后在pc上拉出的目录) |