网站首页 > 技术文章 正文
阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android
本篇文章主要介绍 Android 开发中的部分知识点,通过阅读本篇文章,您将收获以下内容:
一、 如何抓取开机问题Log
二、开机问题Log 分析流程
三、 kernel Log 搜索关键字fs_mgr 初步分析定位
四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert
五、开始时间长的问题分析方法
一、 如何抓取开机问题Log
当我们遇到开机问题时候,不同阶段,我们需要不同的Log分析,这样才可以快速方便的解决开机问题,如果没有Log,我们几乎很难分析解决开机问题。
开机问题 抓取 Log 流程如下:
如何抓取开机问题Log
二、开机问题Log 分析流程
通过不同阶段的Log,我们进行不同的重点分析。
开机问题Log 分析流程如下:
开机问题Log分析流程
三、 kernel Log 搜索关键字 fs_mgr
在 kernel Log 中搜索关键字 fs_mgr 初步分析定位分区问题。
1. fs_mgr: __mount(source=/dev/block/dm-0,target=/system,type=ext4)=-1
System分区mount失败debug方法
- a.Kernel log中有emmc “I/O error” ,需要检查emmc相关供电,替换物料交叉实验
- b.Log中没有I/O error, 回读system分区对比正常机器system.img看文件是否被破坏
2.fs_mgr: __mount(source=/dev/block/dm-0,target=/data,type=ext4)=-1
Data分区mount失败debug方法
a.一般加密的情况/userdata分区会先出现 mount fail情况, 然后才解密节点/dev/block/dm-0 or dm-1 , target=/data mount成功 ,正常
b.如果只有userdata mount失败, 可能是分区数据毁损, 请先readback img, 然后手动进recovery mode 做factory reset 看能否恢复
c.Readback 的userdata img可以对比正常机器看是哪个文件毁损
3. init: fs_mgr_mount_all returned an error
Dm-verity配置错误引起user版本开不了机(eng版本正常)
同步打开/kernel-3.18/arch/arm/configs/${project}_defconfig中如下两个定义:
CONFIG_DM_VERITY=y CONFIG_DM_VERITY_FEC=y
4.fs_mgr: Error loading verity table (Invalid argument) ?跳转至3
四、uart log中搜索关键字 SBC,是否存在error/ fail/ assert
五、开始时间长的问题分析方法
1. MTK 平台开机时间保存的文件
a.手机中(/proc/bootprof)
b.mobile Log中的bootprof文件。
c. Kernel Log 中搜索关键字 BOOTPROF
2. 开机时间耗时分解
a.Preloader耗时(5~8s): preloader
b.Lk耗时(4~6s): lk
c.Kernel初始化完成(5~10s): Kernel_init_done
d.开始播放动画30~35s: BOOT_Animation:START
e.动画播放完毕: 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 ===============
/proc/bootprof 记录开机时间的文件
猜你喜欢
- 2024-10-24 初探animation中steps()属性(animation steps属性)
- 2024-10-24 HTML5(九)——超强的 SVG 动画(htmlsvg动画代码)
- 2024-10-24 自定义日历(二)(自定义日历控件)
- 2024-10-24 Flutter简单动画Animation运用(flutter 视频教程)
- 2024-10-24 css3中动画animation中的steps()函数
- 2024-10-24 移动端渲染原理浅析(移动端渲染原理浅析设计)
- 2024-10-24 iOS 事件处理机制与图像渲染过程(简述ios中的事件响应机制)
- 2024-10-24 GoogleCTF + zer0ptsCTF + ImaginaryCTF 2023 笔记
- 2024-10-24 决战“金三银四”,中高级Web前端大厂面试秘籍:CSS篇
- 2024-10-24 必须知道的 JavaScript API — Performance API
- 11-26Win7\8\10下一条cmd命令可查得笔记本电脑连接过的Wifi密码
- 11-26一文搞懂MySQL行锁、表锁、间隙锁详解
- 11-26电脑的wifi密码忘记了?一招教你如何找回密码,简单明了,快收藏
- 11-26代码解决忘记密码问题 教你用CMD命令查看所有连接过的WIFI密码
- 11-26CMD命令提示符能干嘛?这些功能你都知道吗?
- 11-26性能测试之慢sql分析
- 11-26论渗透信息收集的重要性
- 11-26如何查看电脑连接过的所有WiFi密码
- 最近发表
- 标签列表
-
- cmd/c (57)
- c++中::是什么意思 (57)
- sqlset (59)
- ps可以打开pdf格式吗 (58)
- phprequire_once (61)
- localstorage.removeitem (74)
- routermode (59)
- vector线程安全吗 (70)
- & (66)
- java (73)
- org.redisson (64)
- log.warn (60)
- cannotinstantiatethetype (62)
- js数组插入 (83)
- resttemplateokhttp (59)
- gormwherein (64)
- linux删除一个文件夹 (65)
- mac安装java (72)
- reader.onload (61)
- outofmemoryerror是什么意思 (64)
- flask文件上传 (63)
- eacces (67)
- 查看mysql是否启动 (70)
- java是值传递还是引用传递 (58)
- 无效的列索引 (74)