您的位置:首页 > 移动开发 > Android开发

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

2014-01-17 13:42 295 查看

一、命令篇

内存查看:

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



² 查看系统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]



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

root@android:/ # dumpsys meminfo



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

root@android:/ # dumpsys meminfo | grep phone



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

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



内存泄露分析:

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


AM调试:

² 模拟发送广播:通过命令行执行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版本机器:

使用 刷机精灵 ROOT,root成功率很高。

adb shell 进入shell

Su 获取Root权限

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



抓取LOG

² 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使用高的问题时很好用。

欢迎大家补充。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: