你来我网,3维性感别墅,全系大宗师
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
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio 解决logcat无过滤工具栏的操作
Android Studio 恢复小窗口停靠模式(Docked Mode)
Android studio保存logcat日志到本地的操作
Android Studio快捷键生成TAG、Log.x日志输出介绍
网友评论