• 手机定屏死机问题操作指南


    539c69303d8d6dfc55356fe048705485.gif

    和你一起终身学习,这里是程序员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安全卫士等软件,多次尝试一下方法。

    1. adb kill-server
    2. adb start-server
    3. adb root
    4. adb remount
    5. adb devices
    6. 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可连反之不可连

    8d4caf79533217252f3ba9cf90cbfa1a.jpeg

    adb 查看手机是否挂载成功截图

    四、连接adb 抓取以下Log

    • 1.点击 power键,抓取 按键事件的Kernellog

    adb shell cat /proc/kmsg > kernel.log
    • 2.抓一些 adb现场Log

    adb logcat –v time > logcat.txt
    • 3.抓取 Bugreport

    1. //Android 7.0及以上
    2. adb shell bugreport > bugreport.zip
    3. //Android 5.0 6.0及以下
    4. adb shell bugreport > bugreport.txt

    Bugreport抓取缓慢,需要等待 3分钟左右。

    • 4.抓取system_server 的调用栈

    fb722e1d098f292e63f7c77507eff8f1.jpeg

    抓取system_server 的调用栈信息

    1.连接adb

    adb shell
    1. 创建文件

    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
    1. 导出 panic文件

    触发panic后理论上手机重启会有以下两个文件保存在data中,adb 命令如下:

    1. adb pull /data/dontpanic/apanic_console
    2. adb pull /data/dontpanic/apanic_threads

    五、如果adb不可连,执行下面操作

    1.音量上音量下+电源键(双击2次 )抓取 sysdump

    如果无效请看第二点(Kernel活着,软件重启触发Dump)

    2.长按Power7S触发dump(部分手机可用)

    3.同时长按 音量上和 电源键 抓取sysdumpKernel已死,硬件重启触发sysdump

    六、黑屏 dump 抓取方案

    1.记录下问题发生的时间点
    2.adb 是否可连
    若可以连接,请执行如下命令

    1. adb root
    2. adb remount
    3. adb shell df >> df.txt
    4. adb shell b2g-ps --oom >> b2g_ps.txt
    5. adb shell b2g-info >> b2g-info.txt
    6. adb shell debuggerd -b xxx >> b2g_debuggerd.txt (xxx为b2g_ps.txt中记录的b2g进程号)
    7. adb shell screencap -p /data/1.png
    8. adb shell getevent >> getevent.txt (此时请操作物理按键几次power,上下左右,enter等,看是否按键消息输出)
    9. adb shell screencap -p /data/2.png
    10. adb logcat -v threadtime >> adb_logcat.txt (在logcat执行过程中,再操作几下按键)
    11. adb shell screencap -p /data/3.png
    12. adb shell dumpsys SurfaceFlinger >sf.txt
    13. adb shell dumpsys window > window.txt

    3.给测试机拨打电话看看是否反应?

    参考文献:

    【腾讯文档】Android Framework 知识库
    https://docs.qq.com/doc/DSXBmSG9VbEROUXF5

    友情推荐:

    Android 开发干货集锦

    至此,本篇已结束。转载网络的文章,小编觉得很优秀,欢迎点击阅读原文,支持原创作者,如有侵权,恳请联系小编删除,欢迎您的建议与指正。同时期待您的关注,感谢您的阅读,谢谢!

    46b64e56ab875419dda0097a09321ea2.jpeg

    点击阅读原文,为大佬点赞!

  • 相关阅读:
    flink的window和windowAll的区别
    Kotlin 反射获取internal class中的成员变量LiveData并绑定观察
    resource android:attr/lStar not found.和unknown tag <:string>问题
    2.4 PE结构:节表详细解析
    可恶的C指针、运算左右结合性质
    什么是Jmeter ?Jmeter使用的原理步骤是什么?
    理财基金行情数据查询
    STM32F1读取MLX90632非接触式红外温度传感器
    浅析拉格朗日乘数法及其对偶问题
    零基础快速自学SQL,2天足矣。
  • 原文地址:https://blog.csdn.net/wjky2014/article/details/131777922