Linux内核调试方法总结之dumpsys
dumpsys
【用途】Android系统提供的dumpsys工具可以用来查看系统服务信息与状态。
【使用说明】
adb shell dumpsys <service> [<option>]
【常用服务解释】
|
编号 |
服务名称 |
功能 |
|
1 |
account |
显示accounts信息 |
|
2 |
activity |
显示所有的activities信息,包括activity栈,栈顶activity等 |
|
3 |
cpuinfo |
显示CPU信息,系统各进程的CPU使用率 |
|
4 |
window |
显示键盘、窗口和他们的关系。获取当前应用的component |
|
5 |
wifi |
显示wifi信息 |
|
7 |
package |
获取安装包信息 package $package_name |
|
8 |
usagestats |
每个界面的启动时间 |
|
9 |
statusbar |
显示状态栏相关的信息 |
|
10 |
meminfo |
显示内存信息。meminfo $package_name or $pid显示指定程序内存信息 |
|
11 |
diskstats |
显示磁盘相关信息 |
|
12 |
battery |
显示电池信息 |
|
13 |
alarm |
显示应用持锁情况,可用于分析系统无法待机的问题以及应用层死锁问题 |
|
14 |
input |
显示InputReader和InputDispatcher消息队列,底层事件一般通过inputevent的方式上报,通过查看消息队列,可以判断冻屏时内核是否正常(adb shell setprop sys.input.debug 1打开debug信息) |
【代码实现】
dumpsys代码在frameworks/base/cmds/dumpsys/dumpsys.cpp
所有dump信息都是由重载了Binder的dump函数的类来完成:
@Override
protected void dump(FileDescriptor fd, PrintWriter pw, String[] args){
//TODO: xxxx
}
所有dump信息都是由ServiceManager注册的services提供的,以meminfo为例:
frameworks/base/services/java/com/android/server/am/ActivityManagerService.java中的setSystemProcess函数中注册meminfo服务:
ServiceManager.addService(“activity”, m);
ServiceManager.addService(“meminfo”,new MemBinder(m));
MemBinder->ProcessRecord->各个正在运行状态的ApplicationThread的状态(frameworks/base/core/java/android/app/ActivityThread.java),从中得到需要的meminfo的信息。
Linux内核调试方法总结之dumpsys的更多相关文章
- Linux内核调试方法总结
Linux内核调试方法总结 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 ...
- Linux内核调试方法总结【转】
转自:http://my.oschina.net/fgq611/blog/113249 内核开发比用户空间开发更难的一个因素就是内核调试艰难.内核错误往往会导致系统宕机,很难保留出错时的现场.调试内核 ...
- 【转】Linux内核调试方法总结
目录[-] 一 调试前的准备 二 内核中的bug 三 内核调试配置选项 1 内核配置 2 调试原子操作 四 引发bug并打印信息 1 BUG()和BUG_ON() 2 dump_sta ...
- Linux内核调试方法【转】
转自:http://www.cnblogs.com/shineshqw/articles/2359114.html kdb:只能在汇编代码级进行调试: 优点是不需要两台机器进行调试. gdb:在调试模 ...
- Linux内核调试方法总结之反汇编
Linux反汇编调试方法 Linux内核模块或者应用程序经常因为各种各样的原因而崩溃,一般情况下都会打印函数调用栈信息,那么,这种情况下,我们怎么去定位问题呢?本文档介绍了一种反汇编的方法辅助定位此类 ...
- Linux内核调试方法总结之栈帧
栈帧 栈帧和指针可以说是C语言的精髓.栈帧是一种特殊的数据结构,在C语言函数调用时,栈帧用来保存当前函数的父一级函数的栈底指针,当前函数的局部变量以及被调用函数返回后下一条汇编指令的地址.如下图所示: ...
- Linux内核调试方法总结之序言
本系列主要介绍Linux内核死机.异常重启类稳定性问题的调试方法. 在Linux系统中,一切皆为文件,而系统运行的载体,是一类特殊的文件,即进程.因此,我尝试从进程的角度分析Linux内核的死机.异常 ...
- Linux内核调试方法总结之ddebug
[用途] Linux内核动态调试特性,适用于驱动和内核各子系统调试.动态调试的主要功能就是允许你动态的打开或者关闭内核代码中的各种提示信息.适用于驱动和内核线程功能调试. [使用方法] 依赖于CONF ...
- Linux内核调试方法总结之调试宏
本文介绍的内核调试宏属于静态调试方法,通过调试宏主动触发oops从而打印出函数调用栈信息. 1) BUG_ON 查看bug处堆栈内容,主动制造oops Linux中BUG_ON,WARN_ON用于调试 ...
随机推荐
- qtreewidget 显示保存xml文件
此文是读取和存储已知结构的xml,对于未知结构的xml,可以用递归方法读取和遍历.可参考文章:Qt遍历不规则树的节点. 1.QTreewidget设置 //折叠图标(三角图标)换成自定义图标 ui-& ...
- 剑指offer-重构二叉树-树-python
题目描述 输入某二叉树的前序遍历和中序遍历的结果,请重建出该二叉树.假设输入的前序遍历和中序遍历的结果中都不含重复的数字.例如输入前序遍历序列{1,2,4,7,3,5,6,8}和中序遍历序列{4,7, ...
- Django文档——Model中的ForeignKey,ManyToManyField与OneToOneField 关联关系字段 (Relationship fields)
ForeignKey,ManyToManyField与OneToOneField分别在Model中定义多对一,多对多,一对一关系. 例如,一本书由一家出版社出版,一家出版社可以出版很多书.一本书由多个 ...
- php中引入facebook的messenger消息接口
前一段时间需要开发一个messenger的消息接口,但是facebook的官方文档似是而非,而且由于在国内比较小众,之前也没有另外的人写过中文的开发教程,只好自己进行了一番研究并完成了一个demo,希 ...
- wordpress数据库结构以及数据表之间的关系
默认WordPress一共有以下11个表.这里加上了默认的表前缀 wp_ . wp_commentmeta:存储评论的元数据 wp_comments:存储评论 wp_links:存储友情链接(Blog ...
- vue项目1-pizza点餐系统10-axios实现登陆
一.登陆思路 从数据库中拿到数据,每个用户信息都是一个对象,需要用数组存储对象信息,然后对比输入的用户信息,如果匹配成功就跳转到home主页,否则提示用户或密码错误. 二.具体操作 1.导入axios ...
- Apache 安装后启动出现的错误
错误信息 1: configure: error: APR not found 解决方法:yum install apr* -y 错误信息 2:httpd: apr_sockaddr_info_get ...
- 安信可ESP-12F(8266)模块烧录问题解决:示 :ESP8266 Chip stub error esp_stub_an
模块:安信可ESP-12F, 8266模块 1. 供电电流大于500ma,网上买的串口工具供电电流都是不行的,要上主电源,或者外接电源. 2. 焊接在主板上的模块由于串口同时连接了MCU的串口,如果M ...
- 简单Spring Cloud 微服务框架搭建
微服务是现在比较流行的技术,对于程序猿而言,了解并搭建一个基本的微服务框架是很有必要滴. 微服务包含的内容非常多,一般小伙伴们可以根据自己的需求不断添加各种组件.框架. 一般情况下,基本的微服务框架包 ...
- vim小白练习记录
1.vim卡死 按ctrl+s键后 vim卡死,按任何键不管用,按ctrl+q恢复