本篇文章主要介绍 Android
开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、 如何抓取开机问题Log
当我们遇到开机问题时候,不同阶段,我们需要不同的Log
分析,这样才可以快速方便的解决开机问题,如果没有Log
,我们几乎很难分析解决开机问题。
开机问题 抓取 Log 流程如下:
如何抓取开机问题Log
通过不同阶段的Log
,我们进行不同的重点分析。
开机问题Log 分析流程如下:
开机问题Log分析流程
在 kernel Log
中搜索关键字 fs_mgr 初步分析定位分区问题。
mount
(source=/dev/block/dm-0,target=/system
,type=ext4)=-1
a.Kernel log
中有emmc “I/O error”
,需要检查emmc
相关供电,替换物料交叉实验
b.Log
中没有I/O error
, 回读system分区
对比正常机器system.img
看文件是否被破坏
mount
(source=/dev/block/dm-0,target=/data
,type=ext4)=-1
a.一般加密的情况/userdata
分区会先出现 mount fail
情况, 然后才解密节点/dev/block/dm-0 or dm-1
, target=/data mount
成功 ,正常userdata mount
失败, 可能是分区数据毁损, 请先readback img
, 然后手动进recovery mode
做factory reset
看能否恢复Readback
的userdata img
可以对比正常机器看是哪个文件毁损
fs_mgr_mount_all returned an error
同步打开/kernel-3.18/arch/arm/configs/${project}_defconfig
中如下两个定义:
- CONFIG_DM_VERITY=y
- CONFIG_DM_VERITY_FEC=y
Error loading verity table
(Invalid argument) 跳转至3uart log
中搜索关键字 SBC
,是否存在error/ fail/ assert
a.手机中(/proc/bootprof
)mobile Log
中的bootprof
文件。Kernel Log
中搜索关键字 BOOTPROF
a.Preloader
耗时(5~8s)
: preloader
Lk
耗时(4~6s)
: lk
Kernel
初始化完成(5~10s)
: Kernel_init_done
30~35s
: BOOT_Animation:START
BOOT_Animation:END
/proc/bootprof
记录开机时间的文件举例如下:
- << /proc/bootprof >>:
- ----------------------------------------
- 0 BOOT PROF (unit:msec)
- ----------------------------------------
- // preloader LK
- 1336 : preloader
- 8331 : lk (Start->Show logo: 1382)
- ----------------------------------------
- ... ...
- // Kernel 初始化完成
- 2902.540083 : 1-swapper/0 : Kernel_init_done
- ... ...
- // 开机动画开始
- 7958.560172 : 705-SurfaceFlinger: : BOOT_Animation:START
- ... ...
- // 开机动画播放完毕
- 298996.885174 : 2097-Binder:463_5 : BOOT_Animation:END
- 299055.478251 : 1083-ActivityManager : AP_Init:[service]:[com.android.bluetooth]:[com.android.bluetooth/.btservice.AdapterService]:pid:3854
- 299079.525174 : OFF
- ----------------------------------------
- ================ END of FILE ===============
联系客服