Android程序的调试--善用Log
2010-09-27 20:20
375 查看
刚接触Android时,就因为不知道怎么调试程序而万分苦恼,眼巴巴看着程序报错却觉得无从下手。。后来,了解深了,渐渐知道如何去调试程序。遥记起之前好像也有人问过我类似的问题,所以今天就说一下这个吧。
Android的调试方式主要有两种(Eclipse环境下):
一种是利用Debug模式启动程序。一般先在恰当位置设置断点(直接双击行号即可设置一个断点),然后右击你所创建的项目,选择 "Debug As -> Android Application",之后程序便会启动,右击Eclipse右上角的 Debug 图标
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/fc40b5285418af5197ee44ba54fc5d2f.png)
,即可切换到 Debug 界面,然后什么查看变量(在右边的Variables窗口里双击 this 后可以看到)啊,单步执行(在左边Debug窗口单击右键可以看到)啊,我就不多说了。毕竟这种方式我用得也不是特别多,所以也不好说什么。附一图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/61d9db7cd04df2f8dd56b3b39742d08f.png)
第二种就是利用Log类在程序适当的地方插入语句让其打印出一些东西出来。觉得这一种方式挺好用的,适合快速找到问题所在的地方。所以我就具体介绍一下这玩意了。
首先,android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。这些静态方法都有两个字符串参数,第一个字符串参数是标签,用来作为一种标记吧;第二个字符串参数是欲打印信息的主体内容。
1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦(打印所有信息)的意思,平时使用就是Log.v("","");
2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
我自己的话,用习惯了Log.d。至于你自己到底用哪一个,就自己看着办吧。其实都差不多,只是给打印出来的信息分下类而已。另外,Log其实不仅可以打印信息,而且还可以用来查看某些变量的值,如你要查看变量test的值,只需要采用以下语句:
Log.d("tag", "test=" + test);
好了,在大概了解了Log类以及里面一些方面的方法后,我们就在程序的适当语句插入Log.d();吧(当然也可以用其他的)。一般我会用在以下两个方面:一是放在几乎所有方法(特别是容易、可能出错的方法)的开头处,这样可以看到程序究竟是运行到哪个方法上才出错的;二是放在一些给重要变量赋值的语句后查看赋值后变量的值是否与预期的一致。
在完成这些语句后,运行程序之前,我们必须先打开LogCat窗口,方法是,选择"Window -> ShowView -> Others", 在弹出窗口选择 "Android -> LogCat",如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/0332da2daf61fc7ca535356574620fe4.png)
一切准备就绪之后,你就可以启动程序了,Log打印出来的信息你都可以在LogCat窗口里面看到。当程序出错时,你只需要检查一下它是运行到哪个方法时才出错的,另外再看一下红字部分的错误描述信息(如下图),根据它的描述,或者自己仔细查看下代码,或者上网百度,相信不久肯定能把bug解决掉的。对了,另外补充一点,可以通过在LogCat 窗口下面的 Filter 文本框输入关键字过滤掉其他一些无关的信息(过滤的是最后一列,即Log.d()的第二个字符串参数)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/6284ae459fb62c9d876b687d6e19a5a7.png)
额,大概就这些了。欢迎大家赐教啊。。
Android的调试方式主要有两种(Eclipse环境下):
一种是利用Debug模式启动程序。一般先在恰当位置设置断点(直接双击行号即可设置一个断点),然后右击你所创建的项目,选择 "Debug As -> Android Application",之后程序便会启动,右击Eclipse右上角的 Debug 图标
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/fc40b5285418af5197ee44ba54fc5d2f.png)
,即可切换到 Debug 界面,然后什么查看变量(在右边的Variables窗口里双击 this 后可以看到)啊,单步执行(在左边Debug窗口单击右键可以看到)啊,我就不多说了。毕竟这种方式我用得也不是特别多,所以也不好说什么。附一图:
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/61d9db7cd04df2f8dd56b3b39742d08f.png)
第二种就是利用Log类在程序适当的地方插入语句让其打印出一些东西出来。觉得这一种方式挺好用的,适合快速找到问题所在的地方。所以我就具体介绍一下这玩意了。
首先,android.util.Log常用的方法有以下5个:Log.v() Log.d() Log.i() Log.w() 以及 Log.e() 。根据首字母对应VERBOSE,DEBUG,INFO, WARN,ERROR。这些静态方法都有两个字符串参数,第一个字符串参数是标签,用来作为一种标记吧;第二个字符串参数是欲打印信息的主体内容。
1、Log.v 的调试颜色为黑色的,任何消息都会输出,这里的v代表verbose啰嗦(打印所有信息)的意思,平时使用就是Log.v("","");
2、Log.d的输出颜色是蓝色的,仅输出debug调试的意思,但他会输出上层的信息,过滤起来可以通过DDMS的Logcat标签来选择.
3、Log.i的输出为绿色,一般提示性的消息information,它不会输出Log.v和Log.d的信息,但会显示i、w和e的信息
4、Log.w的意思为橙色,可以看作为warning警告,一般需要我们注意优化Android代码,同时选择它后还会输出Log.e的信息。
5、Log.e为红色,可以想到error错误,这里仅显示红色的错误信息,这些错误就需要我们认真的分析,查看栈的信息了。
我自己的话,用习惯了Log.d。至于你自己到底用哪一个,就自己看着办吧。其实都差不多,只是给打印出来的信息分下类而已。另外,Log其实不仅可以打印信息,而且还可以用来查看某些变量的值,如你要查看变量test的值,只需要采用以下语句:
Log.d("tag", "test=" + test);
好了,在大概了解了Log类以及里面一些方面的方法后,我们就在程序的适当语句插入Log.d();吧(当然也可以用其他的)。一般我会用在以下两个方面:一是放在几乎所有方法(特别是容易、可能出错的方法)的开头处,这样可以看到程序究竟是运行到哪个方法上才出错的;二是放在一些给重要变量赋值的语句后查看赋值后变量的值是否与预期的一致。
在完成这些语句后,运行程序之前,我们必须先打开LogCat窗口,方法是,选择"Window -> ShowView -> Others", 在弹出窗口选择 "Android -> LogCat",如下图
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/0332da2daf61fc7ca535356574620fe4.png)
一切准备就绪之后,你就可以启动程序了,Log打印出来的信息你都可以在LogCat窗口里面看到。当程序出错时,你只需要检查一下它是运行到哪个方法时才出错的,另外再看一下红字部分的错误描述信息(如下图),根据它的描述,或者自己仔细查看下代码,或者上网百度,相信不久肯定能把bug解决掉的。对了,另外补充一点,可以通过在LogCat 窗口下面的 Filter 文本框输入关键字过滤掉其他一些无关的信息(过滤的是最后一列,即Log.d()的第二个字符串参数)。
![](https://oscdn.geek-share.com/Uploads/Images/Content/202008/24/6284ae459fb62c9d876b687d6e19a5a7.png)
额,大概就这些了。欢迎大家赐教啊。。
相关文章推荐
- Android程序的调试--善用Log
- Android程序的调试--善用Log
- eclipse调试android程序时,log太多
- Android小技巧:LogHelper调试程序执行流程的小技巧
- 华为手机调试Android程序崩溃不打印Log
- android 手机调试程序时eclipse打印不出Log日志
- android 手机调试程序时eclipse打印不出Log日志
- Android eclipse 程序调试以及快捷键的使用
- Android--真机调试程序方法
- 关于Android应用调试在小米手机安装程序时出现Installation failed with message INSTALL_CANCELED_BY_USER问题解决
- android脚步---如何看log之程序停止运行,和UI线程和非UI线程之间切换
- eclipse上调试android里的程序。
- 通过USB调试android手机程序
- adb gdb 调试android C/C++程序
- Android程序真机调试
- android程序调试和访问网络进行下载
- 使用Application.RegisterLogCallback来调试程序
- Android开发笔记之:一分钟学会使用Logcat调试程序的详解
- Xamarin.Android 在VS下调试时提示 In mgmain JNI_OnLoad 程序“Mono”已退出 解决办法
- (转)通过wifi调试android程序