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
上一篇: 快拔我的洗澡卡