定屏死机问题操作指南

极力推荐文章:欢迎收藏
Android 干货分享

阅读五分钟,每日十点,和您一起终身学习,这里是程序员Android
本篇文章主要介绍 Android
开发中的定屏死机部分知识点,通过阅读本篇文章,您将收获以下内容:
一、定屏死机问题抓取 Log 要求
二、 复现定屏死机问题后做什么
三、检查adb是否可连的方法
四、连接adb 抓取以下Log
五、如果adb不可连,执行下面操作
六、黑屏 dump 抓取方案
一、 定屏死机问题抓取 Log 要求
-
1.使用
debug版本
插入4G
及以上SD卡
。 -
2.测试前调整手机时间和电脑时间一致。
-
3.保留对应手机测试版本的 vmlinux 和 symbols 文件夹
symbols目录:
/out/target/product/XXX平台/symbols
vmlinux目录:
/out/target/product/XXX平台/obj/KERNEL/vmlinux
二、 复现定屏死机问题后做什么
- 1.记录时间点
- 2.拍照,保留现场
- 3.检查adb是否可连
- 4.检查打电话是否能接通
三、检查adb是否可连的方法
手机连接USB
,执行 adb devices
,查看是否可以识别到设备ID
,能成功识别,则表示adb
可以连接,否则请查看 5037
端口号是否被占用,建议退出各种手机助手,360安全卫士等软件,多次尝试一下方法。
adb kill-server
adb start-server
adb root
adb remount
adb devices
adb shell
- 1.adb kill-server
杀掉PC
端 adb
进程,防止 5037 断开被手机助手占用。
- 2.adb start-server
启动 PC adb
进程
- 3.adb root
获取root
权限
- 4.adb remount
挂载手机
- 5.adb devices
查看设备id
- 6.adb shell
看是否能进入adb shell
,可进入则是adb
可连反之不可连

四、连接adb 抓取以下Log
- 1.点击
power
键,抓取 按键事件的Kernellog
adb shell cat /proc/kmsg > kernel.log
- 2.抓一些
adb
现场Log
adb logcat –v time > logcat.txt
- 3.抓取
Bugreport
//Android 7.0及以上
adb shell bugreport > bugreport.zip
//Android 5.0 6.0及以下
adb shell bugreport > bugreport.txt
Bugreport
抓取缓慢,需要等待 3
分钟左右。
- 4.抓取
system_server
的调用栈

1.连接adb
adb shell
- 创建文件
touch /data/anr/traces.txt
3.修改文件权限
chmod 777 /data/anr/traces.txt**
4.切换root
su
5.查找system_server
进程id
ps -A | grep system_server
6.根据id
杀掉system_server
kill -3 13691
7.截屏保留线程
/system/bin/screencap -p > /data/anr/screenshot.png
8.导出trace
信息
adb pull /data/anr/traces.txt .
9.如果是黑屏下定屏可以使用此命令检测是否可以点亮屏幕
echo on > /sys/power/state
- 导出
panic
文件
触发panic
后理论上手机重启会有以下两个文件保存在data
中,adb
命令如下:
adb pull /data/dontpanic/apanic_console
adb pull /data/dontpanic/apanic_threads
五、如果adb不可连,执行下面操作
1.音量上
+ 音量下
+电源键
(双击2次 )抓取 sysdump
。
如果无效请看第二点(Kernel
活着,软件重启触发Dump
)
2.长按Power
键7S
触发dump
(部分手机可用)
3.同时长按 音量上
和 电源键
抓取sysdump
(Kernel
已死,硬件重启触发sysdump
)
六、黑屏 dump 抓取方案
1.记录下问题发生的时间点
2.adb
是否可连
若可以连接,请执行如下命令
adb root
adb remount
adb shell df >> df.txt
adb shell b2g-ps --oom >> b2g_ps.txt
adb shell b2g-info >> b2g-info.txt
adb shell debuggerd -b xxx >> b2g_debuggerd.txt (xxx为b2g_ps.txt中记录的b2g进程号)
adb shell screencap -p /data/1.png
adb shell getevent >> getevent.txt (此时请操作物理按键几次power,上下左右,enter等,看是否按键消息输出)
adb shell screencap -p /data/2.png
adb logcat -v threadtime >> adb_logcat.txt (在logcat执行过程中,再操作几下按键)
adb shell screencap -p /data/3.png
adb shell dumpsys SurfaceFlinger >sf.txt
adb shell dumpsys window > window.txt
3.给测试机拨打电话看看是否反应?

至此,本篇已结束,如有不对的地方,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库