Android系统异常问题分析(死机,重启,无法启动,启动异常等)

Android系统异常问题处理流程(死机,重启,无法启动,启动异常等)
1 addr2line工具
作用:把native的出错堆栈信息对应到代码的行数
通过find . -name * addr2line来搜索这个工具
查看出错的堆栈信息,xx.so库出问题,然后分析这个库的堆栈信息
根据出错的二进制地址和出错的库名就可以使用addr2line找出错误的行数
命令:addr2line  /xx.so  0015b6d5然后回车
然后继续看错误堆栈

2 Android死机
观察死机之前的log信息,一般都会有堆栈信息打印,根据这些堆栈信息找到哪个函数或者方法引起
一般先检查是不是内核异常死机,包括CPU和内存是否用完
再看看getevent是否上报,如果不上报,找出不上报原因(获取 input 输入事件,比如获取按键上报信息、获取触摸屏上报信息等)
或者看看inputDispatch是否出现异常导致无法分发事件
如果event没有问题,去分析surfacefinger和LCD驱动,看看是不是界面没有刷新导致的死机问题

3 android系统重启
分为三类,分别是内核重启,modem重启,framework重启
怎么判断是哪类?
1 通过重启时间来判断,如果是内核重启和modem重启,那么重启的时间肯定比上层重启的时间长
2 看看重启是否有震动,如果有,就是内核重启或者modem重启,反之是framework重启
3通过ps进程号来判断,如果是framework重启,zygote、servicemanager等的进程号比较大,正常来说zygote的进程号是500左右,如果出现问题的时候,进程号是1000多,framework就得重启
内核重启的标志:sysreboot reason:software EXCE AP,导致它的原因主要是kernel代码出现异常和硬件狗复位
对应kernel代码出现异常,主要是指kernel主动panic或者被动panic,这种情况一般是出现了踩内存、非法指针等错误
medem重启的log:sysreboot reason:software EXCE AP和kernel差不多

framework的重启原因:
1 native crash引起的重启
一般会在tombstone目录下面找到相关的log
2 watchdog杀死systemserver系统进程引起的重启
需要分析anr里面的trace.txt文件,这类问题一般是死锁,首先是搜索system_server,如果没有搜索到,表示这个anr已经被覆盖,这时候去dropbox找到对应时间的文件,到搜索到system_server相关信息后,log会显示阻塞在什么地方,然后跟着它的阻塞的路径,一直追,知道找到真正触发阻塞的原因,这种异常重点关注时间点,一般在这个时间点之前一定有异常出现
3 systemserver进程出现了其他exception引起的重启
比较容易比如空指针等

3 系统启动异常
与framework相关的有三种
1 按电源键,系统无法启动,没有任何反应
一般是硬件故障,需要硬件帮忙
2 按电源键,有反应,但是一直停在开机第一个静态界面,即kernel开机界面
一般是内核问题,需要kernel分析
3 按电源键,有反应,一直停在开机动画界面。即一直停在bootanimation
一般是开机时各种异常所致
可以通过如下步骤定位

1 确定是否进入了zygote进程
log: START com.android.internal.os.ZygoteInit uid
2 如果进入了zygote进程,确定是否进入了systemserver进程
log: Entered the android system server!
3 如果也进入了systemserver进程,再确定进程里的ams服务、wms服务等是否出现问题
adb shell dumpsys activity
adb shell dumpsys window

# Android 死机重启问题常见分类与原因总结 ## 1. 硬件问题 - **屏幕异常** - 屏不良:表现为黑屏(如屏幕排线损坏、显示驱动故障)。 - TPL问题:表现为定屏(触摸面板逻辑异常)。 - **存储/DDR故障** - 内存颗粒损坏、存储芯片虚焊导致读写异常,引发系统崩溃。 - **电源与电池问题** - 电压不稳、电池老化导致供电不足,触发强制重启。 --- ## 2. 系统问题 ### 底层系统(内核/驱动) - **Kernel Panic** - 内核驱动异常(如 GPU 驱动崩溃、文件系统损坏)。 - **Watchdog 超时** - `system_server_watchdog`:系统关键服务(如 ActivityManager)未响应。 - **进程 D 状态(不可中断睡眠)** - I/O 阻塞或驱动未释放资源,导致进程卡死,最终触发重启。 ### 上层系统服务 - **WMS(窗口管理服务)异常** - 窗口渲染逻辑错误,导致界面冻结。 - **SurfaceFlinger 卡住** - 图形合成服务阻塞,表现为定屏或黑屏。 - **锁屏服务异常** - 指纹/人脸识别模块阻塞亮屏逻辑,导致黑屏(如 `occlude` 状态异常)。 --- ## 3. 应用层问题 - **应用 ANR(无响应)** - 主线程阻塞(如死锁、复杂计算),导致界面定屏,用户感知为系统卡死。 - **内存泄漏/OOM** - 应用持续占用内存,触发系统 `Low Memory Killer` 强制终止进程或重启。 - **多线程冲突** - 资源竞争引发死锁,导致进程挂起。 --- ## 4. 图形显示类问题 - **图形库异常(如 OpenGL/Vulkan)** - 游戏/视频渲染时驱动崩溃,导致黑屏或定屏。 - **Surface 管理失败** - 多图层叠加冲突,引发显示服务(SurfaceFlinger)崩溃。 --- ## 5. 外部因素与兼容性问题 - **过热保护** - CPU/GPU 温度过高触发温控降频或强制重启。 - **OTA 升级失败** - 系统分区校验错误,导致启动循环(Bootloop)。 - **第三方模块兼容性** - 非官方内核/Recovery 修改系统分区,引发不稳定。 --- ## 6. 文件系统与存储异常 - **Data 分区损坏** - 异常断电导致文件系统错误(如 `EXT4` 结构损坏)。 - **存储满/权限错误** - 系统关键目录(如 `/system`)写入失败,引发服务崩溃。 --- ## 典型现象与对应原因速查 | **现象** | **可能原因** | |-------------------------|------------------------------------------| | 黑屏且无响应 | 屏不良、SurfaceFlinger 崩溃、电池故障 | | 定屏但可触发重启 | 应用 ANR、进程 D 状态、WMS 异常 | | 频繁自动重启 | 内核 Panic、温控保护、Data 分区损坏 | | 亮屏黑屏(有状态栏) | 锁屏服务异常(如 Findx2 的 `occlude` 问题) |
最新发布
03-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值