整理的一些常用又特殊的调试命令集

本文详细介绍了多种用于调试Android系统的命令,包括logcat、bugreport、dumpsys、top等,以及如何使用它们来分析内存、CPU、服务、事件和系统设置等问题,对于开发者优化应用和排查问题极具参考价值。
摘要由CSDN通过智能技术生成

1.logcat命令

查看日志

1

adb logcat -v time

2.bugreport命令

导出记录系统的详细信息

1

adb bugreport > xxx.log

可用以下工具分析

 google的bettery historian开源地址:
https://github.com/google/battery-historian

Sony开源的ChkBugReport地址:

https://github.com/sonyxperiadev/ChkBugReport

3.dumpsys命令
查看系统信息

1

2

3

4

5

6

7

dumpsys [options]

               meminfo 显示内存信息

               cpuinfo 显示CPU信息

               account 显示accounts信息

               activity 显示所有的activities的信息

               window 显示键盘,窗口和它们的关系

               wifi 显示wifi信息

例如查看某个程序内存信息:

1

2

#查看应用com.tianxia.test的内存使用情况

adb shell dumpsys meminfo com.tianxia.test

效果图如下:

里面的信息很有价值,尤其对于分析内存泄露,内存溢出都有极大的作用。

4.top命令
查看cpu信息。

1

top -m 5 -t

效果图,按cpu大小列出了5个进程列表。

com.tianxia.test的cpu过高,会导致手机发烫。同时利用这个信息,可以监控应用cpu的使用,以调整优化代码。

5.配置文件local.prop
例:

1

log.tag.SQLiteStatements=VERBOSE log.tag.SQLiteTime=VERBOSE

把上述文本加到/data/local.prop中,如果没有这个文件自行创建。然后重启手机,就能看到每个应用详细的查询数据库的sql语句信息,对于调试数据库,分析和优化数据库sql异常非常有用。

6.分析手机发烫
例:
首先我们写一个程序com.tianxia.test,死循环,核心代码如下:

1

2

3

4

5

6

7

8

@Override

public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    while(true) {

        System.currentTimeMillis();

    }

}

这个应用打开后会一直获取系统时间,因为在主线程,肯定导致应用ANR,也会一直浪费系统cpu,手机发热,我们运行它。
假设我们不知道上述代码,我们来找到这个问题:
(1).找到发烫的应用。
使用top命令:

1

top -m 5 -t

一看是com.tianxia.test占用85%的cpu,原来是这家伙在捣鬼。进程ID是644,这个后面我们有用。
(2).分析发烫的应用进程在干嘛
需要用到linux下的strace命令,但是android是没有集成这个命令的,android版本的下

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值