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
Android 下 Kernel Debug (Qualcomm Chipset)相关推荐
- 无法访问android.git.kernel.org的情况下如何使用repo
Kernel.org维护,android.git.kernel.org索性连域名也不解析了. 可是我正好要用repo下载别的git服务器(nv-tegra)的代码,就试着启动了下.悲剧地发现repo拼 ...
- Android通过cat /sys/kernel/debug/usb/devices获取USB信息
cat /sys/kernel/debug/usb/devices得到的信息如下 下图是我们产品USB 拓扑图 USB设备通过debugfs导出/sys/kernel/debug/usb/device ...
- Win7下WinDbg开启Local Kernel Debug调试
问题:在Win7 64bit系统中用管理员权限打开WinDbg开启Local Kernel Debug时报错: The system does not support local kernel deb ...
- 【实践驱动开发2-001】wifi 在android 下的实现 - AR6000 系列移植详细步骤
说明之前:文档建立在实际的项目中: 硬件环境是三星x210,软件是android4.0 ubuntu13.04 1 如何获取驱动: 1.1 AR6000 3.1的资源包最新可以找到的地方: 2014 ...
- USB-详解/sys/kernel/debug/usb/devices
文章目录 1.概述 2.示例 2.1 某项目 2.2 个人开发板 2.3 OHCI.UHCI.EHCI.XHCI 区别联系 3.文件格式 3.1 T:Topology(拓扑结构) 3.2 B:Band ...
- Android Camera简单整理(四)-Android Camera性能Debug经验
针对手机厂商相机性能优化部分进行重点总结记录 Android Camera性能Debug经验 一.相机性能场景 二.相机性能debug工具及方案建议 1.dumpsys media.camera 1. ...
- linux 内核调试信息在哪里,Linux kernel debug技巧----开启DEBUG选项
Linux kernel debug技巧----开启DEBUG选项 作者:wowo 发布于:2016-11-1 19:39 分类:Linux应用技巧 kernel的source code中有很多使用p ...
- Android中解决debug.keystore到期的问题
开发Android或者jee或者其他java应用时,如果eclipse中的项目前有个红叉叉,但是src下有没有任何提示错误但是又不能通过编译的时候如何找到项目工程的错误根源呢?方法如下: 打开ecli ...
- Android下添加新的自定义键值和按键处理流程【转】
本文转载自: Android下添加新的自定义键值和按键处理流程 说出来不怕大家笑话,我写这篇博客的原因在于前几天去一个小公司面试Android系统工程师,然后在面试的时候对方的技术总监问了我一个问题, ...
最新文章
- HarmonyOS 输入框TextField的使用
- 调制的缺点_电光调制与声光调制原理和应用领域
- 红帽论坛北京站召开 设立亚太开放创新实验室
- 黑盒测试方法_黑盒测试方法 收集
- 调试代码 2017-03-13
- SharedPointer
- 01. Node js Hello world
- Linux——查看系统的日志的一些实用操作
- 输入班级人数,根据人数,挨个输入成绩,求平均分,求最高分最低分
- Premiere教程,认识 Pr 以及电脑配置
- 微信团队分享:微信支付代码重构以及软件架构上的思考
- android移动应用技术,Android移动开发技术与应用.pdf
- 树莓派4B全40管脚对应功能示意图
- 【机械】如何用SOLIDWORKS进行ArtCam雕刻机排版
- Rockchip平台cpu散热风扇随温度自动调速的配置方法
- “三次握手,四次挥手”你真的懂吗? 1
- java实现pdf导出
- xsmax进入dfu模式_iPhoneXSMax怎么强制重启-如何进入DFU模式
- Android NavigationBar 显示 Menu 按键
- 5 打印选课学生名单 (25分)
热门文章
- 对I2C总线的时钟同步和总线仲裁的深入理解
- php添加用户信息进入数据库,dedecms用户将信息插入数据库
- matlab 判断元素索引_MATLAB图像处理:08:在交通视频中检测汽车
- html中searchbutton点击没有反应,点击按钮加载完整的HTML后,使用Selenium加载其他元素...
- mysql syntaxerror_解析bitronix连接MySQL出现MySQLSyntaxErrorException错误的解决方法
- 死锁必要条件、解决死锁策略
- oracle三种连接身份
- BZOJ3884 上帝与集合的正确用法 【欧拉定理】
- uva11609(组合数学,快速幂)
- Android系统常用的权限