在Android的应用开发中,我们会用到各种代码调试;其实在Android的开发之后,我们可能会碰到一些随机的问题,如cpu过高,内存泄露等,我们无法简单的进行代码调试,我们需要一个系统日志等等,下面
1
2
3
4
5
6
7
|
dumpsys [options]
meminfo 显示内存信息
cpuinfo 显示CPU信息
account 显示accounts信息
activity 显示所有的activities的信息
window 显示键盘,窗口和它们的关系
wifi 显示wifi信息
|
1
2
|
adb shell dumpsys meminfo com.tianxia.test
|
1
|
log .tag.SQLiteStatements=VERBOSE log .tag.SQLiteTime=VERBOSE
|
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();
}
}
|
其中-p参数输入的就是进程号,第一步中我们找到com.tianxia.test的进程ID是644,我们看看这个应用占用这么高的cpu在干嘛?
它的系统调用一直是gettimeofday,一直输出这个,显然哪里一定进入死循环了,而且是获取时间的死循环,然后结合logcat和代码,定位这段代码(就是前面我们给出的那段代码了)解决这个bug。
1
2
3
4
5
6
7
8
9
10
11
|
file=/sdcard/cpu/cpu_info. log
rm $file
until [ 1 -gt 10000 ]
do
echo -e "\n\n\n\n\n---------------" >> $file
date >> $file
top -m 5 -n 1 >> $file
sleep 3
done
|
1
2
3
4
5
6
7
8
9
10
11
|
file=/sdcard/cpu/mem_info. log
rm $file
until [ 1 -gt 10000 ]
do
echo -e "\n\n\n\n\n---------------" >> $file
date >> $file
dumpsys meminfo com.tianxia.test >> $file
sleep 3
done
|