能力值:
( LV2,RANK:10 )
|
-
-
2 楼
要调试kernel的话,看你用的什么cpu了,一般cpu厂商都有各自的调试工具。
|
能力值:
( 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
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
LDD3的第四章有比较详细的讲解
|
|
|