工欲善其事必先利其器,在Android开发过程中,为了开发调试,查找问题的需要,必须掌握一些常用的命令的用法,这里总结了一些在Android开发中经常会用到的命令,一共15个。
1、ps
列出所有的进程
这个命令是Android调试和问题查找的时候经常会用到的一个命令,在不带参数的情况下会输出所有的进程,
ps -t
则会输出所有的线程。
2、printenv 显示环境变量,例:
printenv HOSTNAME printenv BOOTCLASSPATH
3、 setprop 设置系统属性,和环境变量不是一个概念,例:
setprop ctl.stop zygote setprop ctl.start zygote setprop persist.sys.usb.config adb
4、 getprop 获取系统属性,不带参数显示所有属性,例:
getprop sys.usb.config
5、 watchprops 监听系统属性的改变当系统属性发生改变时输出改变的系统属性。
6、 start 启动服务,它的作用相当于:
setprop ctl.start <service>
7、 stop 停止服务
带参数时,它的作用相当于
setprop ctl.stop <service>不带参数的作用相当于:
setprop ctl.stop zygote setprop ctl.stop surfaceflinger
9、 sync 同步命令,将缓存中的数据写入到存储设备。
对于块设备,默认在挂载的时候都会开启写缓存
11 kill
kill命令不仅仅可以干掉一个进程,还可以发信号给进程,如:
kill -3 <pid>
touch /data/anr/traces.txt chmod 666 /data/anr/traces.txt
因为/data/anr是system权限的,如果在执行kill之前不执行上面这两条命令,如果kill的是一个普通用户进程,那么就会因权限问题而无法输出堆栈信息到traces.txt了。
再如:kill -9 <pid>
发送SIGKILL给进程,用于强制结束进程,包括僵死的进程。
12、debuggerd 用于输出进程的native堆栈
用法: debuggerd -b <pid>
13、 dumpsys 用于调试service
在使用的时候,往往用
dumpsys -l查看所有的系统服务,再通过类似:
dumpsys cpuinfo
13、 netcfg 查看或者设置当前网络连接状态,不带参数的情况输出所有的已知网络连接状态,也可以用来设置动态ip,或者关闭打开网络连接,如:
获取动态ip:
netcfg eth0 dhcp
netcfg eth0 down
netcfg eth0 up
14、 screencap 截屏
例,保存当前屏幕为png图片到/mnt/sdcard/screen.png:
screencap -p /mnt/sdcard/screen.png
显示帮助信息:
screencap -h
15、strace 用于跟踪系统调用,这是一个强大的调试命令,这里只作下简单介绍,更详细的可以参考:http://blog.chinaunix.net/uid-26285146-id-3944345.html
strace -f -p <pid>
-p
指定要跟踪的进程pid
-f
跟踪子进程
这里只介绍了Android中独有的或者经常用到的命令,当然,还有很多的linux命令这里没有介绍到,但已经超出了本篇文章的范围了。
原文:http://blog.csdn.net/i2cbus/article/details/43198165