Android 下 Kernel Debug (Qualcomm Chipset)
16lz
2021-01-23
Android 下 Kernel Debug (Qualcomm Chipset)
Android 下 Kernel Debug (Qualcomm Chipset)
1. 背景
本文面向Linux/Android系统的Kernel Debug技术。
涉及Linux Kernel,Android Native,Android Framework。
主要集中于泛用的技术而不是针对在某个模块上的特有技术,涉及一些Qualcomm Chipset相关的Debug技术
不包含需要使用JTAG的Debug ,不包含面向Android App的Debug
Debug工作量在现今Android产品开发中占据很大比例,对于问题的解决速度也是成败的关键。
(1)Bug的主要来源
• AOSP
• Vendor
• Continuous integration
• Customization
(2)理解系统的组成
System Architecture (MSM8974 )
(3)Debug第一步是需要定位Bug发生在哪里。
在MSM8974上,有多个处理器,运行着不同的系统
• Krait (4 cores, similar to ARM Cortex-A15)
• LK, Linux, Android,TrustZone
• Cortex M3
• Resource Power Manager (RPM)
• Clock/Power 管理
• Boot 主控CPU
• ARM9
• Wifi/BT
• Multimedia (camera,audio/video codecs)
• Hexagon/DSP
• Modem
• Audio/Sensor
• QDSS (Qualcomm Debug Sub System)
2. Bug分类和对策
Bug分类 (Kernel Space )
(1) Kernel Panic
Linux Kernel的致命错误,在 Debug Build上会触发ramdump, 导致系统重启
关联Log 文件: Last kmsg
(2)HW Watchdog
Krait或其他处理器陷入不正常状态(卡住了),在Debug Build 上会触发ramdump,系统重启
关联文件: Parsed ramdmup
(3)Freeze
系统不相应UI/hard-key输入
(4)Shutdown
系统关机
RST_STAT ,Last kmsg
(5)Subsystem bug
Krait以外的系统的问题,在Debug Build上会触发ramdump, 系统重启
关联文件: Parsed ramdmup
3. 经验杂谈
(1)泛用Debug技术
• JTAG On-Device Debugging
• 连接Device到JTAG Debugger,在线Debug。
• 本文不涉及这部分
• On-Device Logging
• DDMS/Logcat
• Linux Dmesg
• Linux debugfs, sysfs, procfs
• Offline Debug
• Ramdump parser
• T32 Simulator
(2)HW Watchdog
• What is watchdog
• Possible cause
• Deadlock/livelock
• Stressful kernel work
• Interrupt flooding
• Unclock register access
• Bus hang?
(3)Log
Log是最经济的解析工具。
设计时要充分考虑各位异常情况,并在异常路径上输出充分的信息
解析Log时要考虑到SMP的影响,要考虑Cpu Hang住的情况
Memory log –parse log from ramdump
借助Console log进行debug
更多相关文章
- 关于华为P10(Android 8.0系统)出现的一个莫名奇妙的ANR
- Android学习之文件存储
- Android InputStreamReader 解析gbk、gb2312编码的xml文件 编码
- android 系统编译要求,官方资料
- android实现文件下载的几种方式
- Android调用系统程序
- Android Studio 3.0以后打包修改文件名方法
- Android编译系统详解(三)
- Android编译系统详解(二)