当前位置: 首页 > article >正文

如何通过 bugreport 分析 Android 系统日志?

📢 1. 职业规划篇
来聊聊安卓职业规划?整机开发大专能做么?
📢 2.基础篇
基础篇.前言
基础篇.编译环境搭建
基础篇.源码目录简介
基础篇.系统 mk_bp 讲解
基础篇.开机动画定制
基础篇.定制桌面壁纸、导航方式
基础篇.系统属性、api 使用
基础篇.名称修改、名词介绍
基础篇.用 bugreport 带你看 Crash 和 ANR
基础篇.Provision 源码分析

📢 3. 系统应用篇
系统应用篇.开机向导制作一
系统应用篇.开机向导制作二
系统应用篇.Settings 导航切换分析
系统应用篇.开机向导导航切换一
系统应用篇.开机向导导航切换二
系统应用篇.gms 制作集成
系统应用篇.开机向导适配 GMS
系统应用篇.Launcher3 结构剖析一
系统应用篇.Launcher3 结构剖析二
系统应用篇.Launcher3 结构剖析三
系统应用篇.Launcher3 图标加载流程一
系统应用篇.Launcher3 图标加载流程二
系统应用篇.Launcher3 桌面布局定制
系统应用篇.解密 Partner、google PAI 机制
系统应用篇.Partner 机制预制壁纸、默认布局
系统应用篇.Launcher 双排 Hotseat 定制一
系统应用篇.Launcher 双排 Hotseat 定制二
系统应用篇.Launcher 双排 Hotseat 定制三
系统应用篇.Launcher Taskbar 简介以及调出
系统应用篇.SystemUI 篇_用工具教会你看布局、进程
系统应用篇.SystemUI 结构讲解一
系统应用篇.SystemUI 结构讲解二
系统应用篇.SystemUI 的启动流程
系统应用篇.SystemUI 导航栏创建一
系统应用篇.SystemUI 导航栏创建二
系统应用篇.SystemUI 自定义导航按键
系统应用篇.SystemUI 快捷面板下拉流程
系统应用篇.SystemUI 定制禁用锁屏下拉通知栏
系统应用篇.SystemUI 通知注册流程
系统应用篇.SystemUI 通知发送流程

📢 4. 系统篇
系统篇.SystemServer 篇_应用与系统进程间关系
系统篇.SystemServer 简介、自定义 Service 服务一
系统篇.SystemServer 简介、自定义 Service 服务二
系统篇.SystemServer 简介、自定义 Service 服务三
系统篇.SystemServer 简介、自定义 Service 服务四
系统篇.SELinux 问题解决套路一
系统篇.SELinux 问题解决套路二
系统篇.ActivityManagerService 简介
系统篇.WindowManagerService 简介一
系统篇.WindowManagerService 简介二
系统篇.PackageManagerService 简介一
系统篇.PackageManagerService 简介二
系统篇.FW 实战 - Letterbox 定制应用方向一
系统篇.FW 实战 - Letterbox 定制应用方向二
系统篇.分屏流程一
系统篇.分屏流程二

📢 5. 性能篇
(省)低内存优化
性能篇 (省). 低内存查杀机制
性能篇 (省).SystemServer 与 LMK 的 socket 通信
性能篇 (省). 内核进程 LMKD
性能篇 (省). 内存分析
性能篇 (省). 内存泄漏定位与解决
(稳)稳定性优化
性能篇 (稳).WatchDog 检测机制一
性能篇 (稳).WatchDog 检测机制二
性能篇 (稳). 深入 Crash 捕获器流程一
性能篇 (稳). 深入 Crash 捕获器流程二
性能篇 (稳). 深入炸弹 ANR 流程一
性能篇 (稳). 深入炸弹 ANR 流程二
(快)开机优化
性能篇 (快). 开机耗时分析
性能篇 (快). 开机耗时优化
性能篇.实战优化方案分享

framework交流,答疑:251662478

如何通过 bugreport 分析 Android 系统日志?
在 Android 整机开发 & 系统调试 中,bugreport 是最常用的日志分析工具之一。它包含了系统运行的各种关键日志,包括 main.log、event.log、ANR、Crash 等。本文将手把手教你如何从 bugreport 中找出关键信息!🚀

📌 1. 获取 bugreport
在 Android 设备 上,使用 ADB 获取 bugreport:

adb bugreport > bugreport.zip

或者:

adb shell bugreport > bugreport.txt

如果是 Android 7.0 以上,会生成 bugreport.zip,解压后包含:
bugreport.txt(完整日志)
FS(文件系统信息)
TOMBSTONES(崩溃信息)
ANR(应用无响应日志)

📌 2. main.log(主日志)
main.log 主要记录 系统组件 & 应用的运行状态,包含: ✅ 应用启动 / 退出
✅ Service 启动 / 绑定 / 解绑
✅ Activity 生命周期(onCreate、onResume、onDestroy)
✅ 重要的系统信息 & 错误日志
🔍 关键搜索词:

am_proc_start  # 进程启动
am_proc_died   # 进程结束
am_activity_launch_time  # Activity 启动耗时
am_crash   # APP 崩溃
am_anr   # APP ANR

🔍 示例:

02-05 12:45:21.123  1000  1850  1982 I am_proc_start: [0,18982,10034,com.android.settings,activity]

📌 解析: com.android.settings 进程(PID=18982)启动成功。

📌 3. event.log(系统事件日志)
event.log 主要记录 系统关键事件,例如: ✅ 应用前后台切换
✅ 屏幕解锁 / 休眠
✅ WMS(窗口管理)事件
🔍 关键搜索词:

wm_task_moved  # Activity 切换
screen_toggled  # 屏幕开关

🔍 示例:

02-05 13:05:33.123  1000  1850  1982 I screen_toggled: 1

📌 解析: screen_toggled: 1 表示 屏幕被点亮,0 表示 息屏。

📌 4. ANR(Application Not Responding)
ANR(应用无响应) 发生在: ✅ 主线程阻塞(耗时任务没放到子线程)
✅ 输入事件(InputDispatch)超时
✅ Service 绑定 / 解绑超时
🔍 关键搜索词:

am_anr  # 查找所有 ANR 事件

🔍 示例:

02-05 14:12:45.987  1000  1850  1982 I am_anr: [12345,com.example.app,InputDispatching Timeout]

📌 解析:
12345 = 进程 ID
com.example.app = 发生 ANR 的应用
InputDispatching Timeout = 由于 主线程卡住 导致 ANR
🛠 如何分析 ANR ? 1️⃣ 搜索 “ANR in” 找到完整 ANR 堆栈日志
2️⃣ 查看 “main.log” 是否有 “InputDispatch Timeout”
3️⃣ 检查 “event.log” 看看屏幕操作记录

📌 5. Crash(应用崩溃)
Crash(崩溃) 主要由于: ✅ 空指针异常(NullPointerException)
✅ 数组越界(ArrayIndexOutOfBoundsException)
✅ ANR 之后的强制杀进程
🔍 关键搜索词:

am_crash   # APP 崩溃
FATAL EXCEPTION  # 关键错误

🔍 示例:

02-05 14:39:55.321  1000  1850  1982 I am_crash: [12345,1000,com.example.app,java.lang.NullPointerException,"Attempt to invoke virtual method 'java.lang.String'"]

📌 解析:
12345 = 进程 ID
com.example.app = 崩溃的应用
NullPointerException = 空指针异常

📌 6. 如何快速定位问题?
💡 快速分析思路: 1️⃣ 应用崩溃(Crash)
搜 am_crash 找到崩溃日志
查看 FATAL EXCEPTION 详细堆栈
2️⃣ 应用卡死(ANR)
搜 am_anr 找到 ANR 发生时间
搜 InputDispatching Timeout 确认是否是主线程卡住
3️⃣ 应用启动慢
搜 am_proc_start 找到进程启动时间
搜 am_activity_launch_time 查看 Activity 启动耗时
4️⃣ 系统 BUG / 设备异常
搜 system_server crash 找到 SystemServer 崩溃
搜 tombstone 查找 native 崩溃(C++ 代码问题)

💡 总结
通过 bugreport,我们可以快速分析 应用崩溃(Crash)、ANR(无响应)、系统事件(event.log),快速定位 Android 系统的问题。希望这篇文章能帮到你!💪🚀
📢 你在调试 bugreport 过程中遇到哪些问题?欢迎留言讨论! 😃


http://www.kler.cn/a/541399.html

相关文章:

  • CSS 实现下拉菜单效果实例解析
  • 数字滤波器的分类
  • 【学习笔记】计算机网络(三)
  • 【动态规划篇】:动态规划解决路径难题--思路,技巧与实例
  • Vue设计模式到底多少种?
  • 【python】matplotlib(animation)
  • flutter-webrtc安装示例
  • 简易图书管理系统——MYsql+Javase+JDBC
  • 后端开发校招面试常见问答总结(一)|Java高频考点解析
  • ESP32S3(主模式) 与 STM32(从模式) 进行SPI全双工通信
  • Ansible与shell脚本执行的区别
  • 数据源和 sqlSessionFactory 配置
  • 13.10 统一配置管理中心:TranslationChain 架构的简洁配置管理方案
  • DeepSeek的崛起:开源AI的革命
  • WebSocket学习记录
  • 数据治理双证通关经验分享 | CDGA/CDGP备考全指南
  • Leetcode Hot100 81-85
  • 企业AI招聘会在2025年出现爆炸式增长吗?
  • Node.js笔记入门篇
  • 【从零开始入门unity游戏开发之——C#篇54】C#补充知识点——元组(Tuple)
  • 【SpringBoot实现全局API限频】 最佳实践
  • AWS Savings Plans 监控与分析工具使用指南
  • 开源AI终端工具Wave Terminal从安装到远程连接内网服务器全流程攻略
  • 深度整理总结MySQL——MySQL加锁工作原理
  • 【图片转换PDF】多个文件夹里图片逐个批量转换成多个pdf软件,子文件夹单独合并转换,子文件夹单独批量转换,基于Py的解决方案
  • 安卓基础(第一集)