Android常用调试命令、工具汇总 (一)命令篇

一、命令篇

内存查看:

使用场景:跟踪进程内存使用情况,看是否存在内存回收不了的问题,如果程序存在内存泄露问题,通过内存动态占用情况可以看出一些端倪。

 

2 查看系统dalvik给每一个进程分配的可用内存情况:

root@android:/ # getprop

[dalvik.vm.heapgrowthlimit]: [192m] :进程最大可分配到192m 如果哪个进程超过这个值就会发生OOM问题。

[dalvik.vm.heapmaxfree]: [8m]

[dalvik.vm.heapminfree]: [2m]

[dalvik.vm.heapsize]: [256m] :单个虚拟机可分配的最大内存=256m 

[dalvik.vm.heapstartsize]: [8m]

 

2 查应用进程占用内存分布:

root@android:/ # dumpsys meminfo

 

2 查指定进程占用内存情况,比如电话进程

root@android:/ # dumpsys meminfo | grep phone

 

2 查指定几个进程占用内存情况,比如电话进程、电话本进程、信息进程

root@android:/ # dumpsys meminfo | grep -E "phone|mms|contacts"

 

内存泄露分析:

   http://blog.csdn.net/rambomatrix/article/details/17485503

 

AM调试:

 

2 模拟发送广播:通过命令行执行adb shell am broadcast发送广播通。这个在调试的时候常用到。

adb shell am broadcast 后面的参数有:
[-a <ACTION>]
[-d <DATA_URI>]
[-t <MIME_TYPE>] 
[-c <CATEGORY> [-c <CATEGORY>] ...] 
[-e|--es <EXTRA_KEY> <EXTRA_STRING_VALUE> ...] 
[--ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE> ...] 
[-e|--ei <EXTRA_KEY> <EXTRA_INT_VALUE> ...] 
[-n <COMPONENT>]
[-f <FLAGS>] [<URI>]

 

例如:adb shell am broadcast -a com.android.test --es test_string "this is test string" --ei test_int 100 --ez test_boolean true说明:蓝色为key,红色为alue,分别为String类型,int类型,boolean类型

 

Android AM命令行启动程序的方法

附上链接,感觉不是很常用到。

http://blog.csdn.net/sunrock/article/details/5675067

 

ADB命令调试

  Debug 版本机器:

  adb remount  重新挂载文件系统 

  adb pull .../Phone.apk g:/  Phone.apk从手机中取出来放到G盘。如果需要反编译别人机器的apk,可以这样取出来。

  adb push .../Phone.apk system/app 把修改后的Phone.apk放入手机,放入以后需要让phone进程重启一次。

  root@android:/ ps | grep phone   查找phone进程的pid

  root@android:/ kill 1212  杀掉phone进程

 

 USER版本机器:

 使用 刷机精灵 ROOTroot成功率很高。

 adb shell 进入shell

 Su  获取Root权限

 root@android:/# chmod -R 777 system/  给指定目录赋予读写权限,然后可以更改这个目录                      里面的文件。

 

抓取LOG

2 Adb logcat   

 

Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区,要想查看这些附加的缓冲区,可以使用-b 选项,以下是可以指定的缓冲区:

radio — 查看包含在无线/电话相关的缓冲区消息

events — 查看事件相关的消息

main — 查看主缓冲区(默认缓冲区)

 

常用的打印方法有:

-v time 打印时间

-c 清理缓冲,在打印Log之前可以先执行一次清理,可以减少无效log

-s  LOG_TAG 打印指定的log tag对应的log

-f 文件名 将日志输出到文件

 

 

CPU /THREAD查看

查看当前应用有多少个线程在跑,每个线程cpu使用情况如何。如果程序写的有问题,开启了一些线程在后台跑却从未释放,可能给程序带来严重的影响。

root@android:/ # top -t


    可以看到电子邮件这个应用里面所有的线程使用cpu的情况。这个数据在分析一些cpu使用高的问题时很好用。



欢迎大家补充。

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。