欢迎来到天天文库
浏览记录
ID:42603327
大小:224.09 KB
页数:22页
时间:2019-09-18
《android调试方法-强烈推荐》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android系统debug经验总结姓名:_____胡清河_______部门:_____智能驱动_______日期:_____2012.11.17_______修订历史记录日期版本说明作者2012-11-19V1.0胡清河目录一.引言………………………………………………………………………………………………………………………..3二.常用查看系统状态和内存命令……………………………………………………………………………..3三.ANR…………………………………………………………………………………………………………………………7四.CRA
2、SH…………………………………………………………………………………………………………………….12五.MemoryAnalyer定位内存泄漏……………………………………………………………………………..14六.动态库死机调试方法……………………………………………………………………………………………..14七.Oops问题的调试和定位………………………………………………………………………………………..17一.引言Android系统是以linux内核为基础的一个框架,其实本质上就是一个linux操作系统,所以掌握linux系统对分析和
3、调试android一些死机和重启问题致关重要,下面是本人常用的一些分析方法,和大家共享.一起进步,享受美好生活,是我们每天所追求的.二.常用查看系统状态和内存命令1.cat/proc/meminfo查看系统内存信息,剩余内存=MemFree+Buffers+CachedAndroid系统中杀程序的这个刽子手被称作"LowMemoryKiller",它是在Linux内核中实现的。这里它实现了一个机制,由程序的重要性来决定杀谁。通俗来说,谁不干活,先杀谁。Android将程序的重要性分成以下几类,按照重要性依次降低的顺序,可分为以下几种
4、进程:名称Oom_adj解释Foregroundapp0前台程序Visibleapp1用户可见的程序Secondaryapp2后台服务,比如播放音乐Hiddenapp7后台被隐藏的程序Conentapp14Contentprovider提供进程Emptyapp15空进程其中每个程序都会有一个oom_adj值,这个值越小,程序越重要,被杀的可能性越低。系统将根据剩余内存依次杀掉oom_odj高的进程来回收内存。有时候杀进程太频繁会引起ANR,因为杀进程引起的进程调度,进程上下文切换是需要很大开销的.2.Procrank查看系统中各进程
5、内存占用情况•VSS-VirtualSetSize虚拟耗用内存(包含共享库占用的内存)•RSS-ResidentSetSize实际使用物理内存(包含共享库占用的内存)•PSS-ProportionalSetSize实际使用的物理内存(比例分配共享库占用的内存)•USS-UniqueSetSize进程独自占用的物理内存(不包含共享库占用的内存)一般来说内存占用大小有如下规律:VSS>=RSS>=PSS>=USSUSS才是进程真正占用内存的大小.定位某个应用内存泄漏时可用此命令观察。另外一个常用的命令是dumpsysdumpsysmem
6、infodump所有进程占用内存详细信息dumpsysmeminfo–dpiddump某个进程占用内存详细信息1.top可以查看进程或线程cpu占用率排名。用这个命令可以很快发现系统中是否存在死循环,cpu占用率高的进程/线程,快速定位到发生问题地方。top-m12查看cpu占用率前12的进程top-t–m12查看cpu占用率前12的线程1.vmstatvmstat是一个查看虚拟内存(VirtualMemory)使用状况的工具,使用vmstat命令可以得到关于进程、内存、内存分页、堵塞IO、traps,上下文切换数及CPU活动的信息
7、.用这个命令可以观察底层中断是否正常,比如在触摸屏按下的时候,应该会产生大量中断,看这个数目是否和正常时一样。Vmstat–d1,每隔一秒种打印出系统信息,包括以下信息:进程 r:运行队列中进程数量 b:等待IO的进程数量 Memory(内存): swpd:使用虚拟内存大小 free:可用内存大小 buff:用作缓冲的内存大小swap cache:用作缓存的内存大小 si:每秒从交换区写到内存的大小 so:每秒写入交换区的内存大小 IO:(现在的Linux版本块的大小为1024bytes) bi:每秒读取的块数
8、 bo:每秒写入的块数 in:每秒中断数,包括时钟中断。系统 cs:每秒上下文切换数。 CPU(以百分比表示): us:用户进程执行时间(usertime) sy:系统进程执行时间(systemtime) id:空闲时间
此文档下载收益归作者所有