首页
社区
课程
招聘
[求助]android内核的调试
发表于: 2014-8-21 14:46 5374

[求助]android内核的调试

2014-8-21 14:46
5374
各位大牛,小弟弱弱的问下,android内核有动态调试的方法么,目前是只能打log么? 谢谢~~

[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)

收藏
免费 0
支持
分享
最新回复 (3)
雪    币: 110
活跃值: (60)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
要调试kernel的话,看你用的什么cpu了,一般cpu厂商都有各自的调试工具。
2014-8-21 18:49
0
雪    币: 90
活跃值: (28)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
3
某次培训记录了下面 7 种方式,大部分获取信息是通过 Log 来分析的。

1. 查看内存信息 /proc/meminfo
2. 诊断内存碎片 /proc/buddyinfo
3. 查看虚拟内存状态 vmstat
4. 查看堆栈信息
5. 查看CPU 信息 top
6. 追踪系统调用 strace
7. 获取 input 设备的信息,getevent

1. 查看内存信息 /proc/meminfo
MemTotal: 所有可用RAM大小, 物理内存减去一些预留位和内核二进制代码大小。
MemFree: LowFree与HighFree的总和,被系统留着未使用的内存。
Buffers: 用来给文件做缓冲大小。
Cached: 高速缓冲存储器使用的内存的大小,等于 diskcache - SwapCache 。
Dirty: 等待被写回到磁盘的内存大小
Writeback: 正在被写回到磁盘的内存大小。

2. 诊断内存碎片 /proc/buddyinfo
• kernel OOM 时,会主动保存 buddyinfo 的信息。
•标识 free 内存信息,页大小依次为4k  8k 16k 32k … 若只有 4K ,说明内存碎片化严重。

3. 查看虚拟内存状态 vmstat
        vmstat  reports  information  about  processes, memory, paging, block IO, traps, disks and cpu activity.

4. 查看堆栈信息
(1)Java 层
adb shell   kill -3 <pid>
(2)Native 层
        adb shell  debuggerd –b <pid>  
若冻屏时,要查看 system service。

5. 查看CPU 信息 top
Top displays tasks currently being managed by the Linux Kernel.

6. 追踪系统调用 strace
Strace 追踪系统调用和信号,详细见 man strace。 在 Linux 中,应用的进程存在于用户空间,Kernel 里的驱动运行在 kernel 空间。进程需要访问硬件设备时,需要通过系统调用,从用户空间切换到内核空间里,才能够访问硬件设备。
strace 可以追踪一个进程使用的系统调用,包括名称,参数,返回值和执行时间。

7. 获取 input 设备的信息,getevent
The getevent tool runs on the device and provides information about input devices and a live dump of kernel input event
2014-8-26 17:50
0
雪    币: 103
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
LDD3的第四章有比较详细的讲解
2014-8-26 21:02
0
游客
登录 | 注册 方可回帖
返回
//