学了一年的Android,还不会调试?你白学了!

简介: 学了一年的Android,还不会调试?你白学了!

零、前言

开发Android程序时,不仅要注意程序代码的准确性和合理性,还要处理程序中可能出现的异常。Android SDK为我们提供了Log类来获取程序的日志信息,也提供了LogCat管理器,用来查看程序运行的日志信息及错误日志。本文将详细的讲解如何在android studio中,对Android程序进行调试以及DDMS工具的使用

 

 

一、 使用 Log 类来输出日志信息

Android SDK中提供了Log类来获取程序运行时的日志信息,该类在android.util包中,它继承了java.lang.Object类。Log类提供了一些方法,用来输出日志信息,常用的是以下几个:

方法 解析
Log.i() 输出INFO程序日志信息
Log.e() 输出ERROR错误日志信息
Log.d() 输出DEBUG调试日志信息
Log.v() 输出VERBOSE冗余日志信息
Log.w() 输出WARN警告日志信息

上表中列出的Log类的这些方法都有多种重载形式,下面将介绍经常用到的重载形式:


1.1 Log.i()

Log.i()主要用来输出INFO程序日志信息。程序员经常用到的重载形式语法:

public static int i (String key,String value)

key:String字符串,用来为日志信息指定标签,程序员经常将他命名为该类的名称,加以区分。

value:String字符串,用来表示要输出的字符串信息。

INFO程序日志在DDMS的LogCat面板中,一般使用绿色的文字来表示。


1.2 Log.e()

Log.e()方法主要用来输出ERROR错误日志信息。程序员经常用到的重载形式:

public static int e (String key,String value)

key:String字符串,用来为日志信息指定标签,程序员经常将他命名为出现错误的类名称,加以区分。

value:String字符串,用来表示要输出的字符串信息。

ERROR错误日志在DDMS的LogCat面板中,一般使用红色的文字来表示。


1.3 Log.d()

Log.d()方法主要用来输出DEBUG调试日志信息。程序员经常用到的重载形式:

public static int d (String key,String value)

key:String字符串,用来为日志信息指定标签,程序员经常将他命名为可能出现DEBUG的类名称,加以区分。

value:String字符串,用来表示要输出的字符串信息。

DEBUG调试日志在DDMS的LogCat面板中,一般使用蓝色的文字来表示。


1.4 Log.v()

Log.v()方法主要用来输出VERBOSE冗余日志信息。程序员经常用到的重载形式:

public static int v (String key,String value)

key:String字符串,用来为日志信息指定标签,程序员经常将他命名为可能出现冗余的类名称,加以区分。

value:String字符串,用来表示要输出的字符串信息。

VERBOSE冗余日志在DDMS的LogCat面板中,一般使用黑色的文字来表示。


1.5 Log.w()

Log.w()方法主要用来输出WARN警告日志信息。程序员经常用到的重载形式:

public static int w (String key,String value)

key:String字符串,用来为日志信息指定标签,程序员经常将他命名为可能出现警告的类名称。

value:String字符串,用来表示要输出的字符串信息。

WARN警告日志在DDMS的LogCat面板中,一般使用橘黄色的文字来表示。


我们可以在MainActivity.java中输入以下代码

1. public class MainActivity extends AppCompatActivity {
2. 
3. @Override
4. protected void onCreate(Bundle savedInstanceState) {
5. super.onCreate(savedInstanceState);
6.         setContentView(R.layout.activity_main);
7. 
8.         Log.e("zwz01","错误信息");
9.         Log.w("zwz02","警告信息");
10.         Log.i("zwz03","普通信息");
11.         Log.d("zwz04","调试信息");
12.         Log.v("zwz05","冗余信息");
13. 
14.     }
15. }

打开DDMS工具,单机LogCat日志面板,可以在面板内看到如下信息。

 

二、 Android程序调试

 

在程序开发过程中,程序员会不断体会到程序调试的重要性。为了验证Android的运行状况是否和自己想的一样,程序员一般都会在某个方法调用开始和结束的位置,依次使用Log.i()方法输出一定的信息,并根据这些输出信息来判断程序的执行状况。当然这是一种非常过时的程序调试方法,而且会经常造成程序代码混乱,下面来介绍使用Android studio自带的调试工具来调试Android应用程序的方法。


2.1 加断点

下面将详细讲解使用 Android Studio 内置的Android调试器调试Android程序的方法,使用该调试器可以设置程序的断点、实现程序的但不执行、在调试过程中查看变量和表达式的值等调试操作,这样可以避免上述所说的使用Log.i()方法输出调试信息。

使用 Android Studio 的Android调试器需要先设置程序断点,然后使用单步调试分别执行程序代码的每一行。

设置断点是程序调试中必不可少的有效手段,和java代码在eclipse中调试一样,Android调试器在每次遇到程序断点的时候,都会将当前线程挂起,也就是说暂停当前程序的运行。在 Android Studio中,可以在Android编辑器中单击显示代码行号的位置,就可以添加或者删除当前行的断点,如下图所示:

 

2.2 简单调试

为程序设置断点后,单击工具栏的Debug按钮,或者右击代码区域,选择Debug MainActivity.java,将在Android Studio 的底部显示调试面板,查看到当前相关变量的值,如下图所示:

 

 

在调试面板中,可以通过工具栏上的按钮执行相应的调试操作,比如单步跳过、单步跳入等等。常用的调试操作如下:

2.3 单步跳过

 

在工具栏中单击 单步跳过,或者按下F8,将执行单步跳过操作,即运行单独的一行程序代码,但是不进入调用方法的内部,然后跳到下一个可执行点。

如果运行a + b程序,代码如下:

1. public class MainActivity extends AppCompatActivity {
2. 
3. public static int add (int x,int y){
4. return x + y;
5.     }
6. 
7. @Override
8. protected void onCreate(Bundle savedInstanceState) {
9. super.onCreate(savedInstanceState);
10.         setContentView(R.layout.activity_main);
11. 
12. int a = add(1,2);
13. 
14. int b = add(-1,-2);
15.     }
16. }

在int a = add(1,2);处加上断点

 

然后按下F8,我们可以看到,程序直接运行到第20行,而没有进入add()方法。

 

 

如果不断地执行单步跳过操作,会每次执行一行的程序代码,直到程序结束或者等待用户操作(如输入)。

 

2.4 单步跳入

在工具栏点击 单步跳入 , 或者按下F7键,就会跳入到调用方法或对象内部单步执行程序

还是刚刚的 a + b 的例子,在第18行断点处,按下F7,则会进入到add()方法的内部。

 

2.5 跳到下一断点

在工具栏中单击 跳到下一断点 按钮,或者按下F9,会继续向下执行,直到下一个断点的位置。如果程序中没有断点或者抛出了异常,将直接运行到程序结束。

 

2.6 停止调试

在工具栏中单击停止按钮,即红色的正方形:,会停止程序的调试。需要注意的是,该操作不回停止程序的运行,而是会跳过所有的调试。

 


相关实践学习
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
【涂鸦即艺术】基于云应用开发平台CAP部署AI实时生图绘板
相关文章
|
7月前
|
存储 消息中间件 人工智能
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
【03】AI辅助编程完整的安卓二次商业实战-本地构建运行并且调试-二次开发改注册登陆按钮颜色以及整体资源结构熟悉-优雅草伊凡
267 3
|
7月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
859 8
|
7月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
729 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
Shell Linux 开发工具
"开发者的救星:揭秘如何用adb神器征服Android设备,开启高效调试之旅!"
【8月更文挑战第20天】Android Debug Bridge (adb) 是 Android 开发者必备工具,用于实现计算机与 Android 设备间通讯,执行调试及命令操作。adb 提供了丰富的命令行接口,覆盖从基础设备管理到复杂系统操作的需求。本文详细介绍 adb 的安装配置流程,并列举实用命令示例,包括设备连接管理、应用安装调试、文件系统访问等基础功能,以及端口转发、日志查看等高级技巧。此外,还提供了常见问题的故障排除指南,帮助开发者快速解决问题。掌握 adb 将极大提升 Android 开发效率,助力项目顺利推进。
720 0
|
缓存 Java 测试技术
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
2007 3
【01】噩梦终结flutter配安卓android鸿蒙harmonyOS 以及next调试环境配鸿蒙和ios真机调试环境-flutter项目安卓环境配置-gradle-agp-ndkVersion模拟器运行真机测试环境-本地环境搭建-如何快速搭建android本地运行环境-优雅草卓伊凡-很多人在这步就被难倒了
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
|
缓存 前端开发 Android开发
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
670 12
【04】flutter补打包流程的签名过程-APP安卓调试配置-结构化项目目录-完善注册相关页面-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程
|
前端开发 数据处理 Android开发
Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍
本文深入探讨了Flutter前端开发中的调试技巧与工具使用方法,涵盖调试的重要性、基本技巧如打印日志与断点调试、常用调试工具如Android Studio/VS Code调试器和Flutter Inspector的介绍,以及具体操作步骤、常见问题解决、高级调试技巧、团队协作中的调试应用和未来发展趋势,旨在帮助开发者提高调试效率,提升应用质量。
686 8
|
Ubuntu Android开发
安卓系统调试与优化:(一)bootchart 的配置和使用
本文介绍了如何在安卓系统中配置和使用bootchart工具来分析系统启动时间,包括安装工具、设备端启用bootchart、PC端解析数据及分析结果的详细步骤。
1302 0
安卓系统调试与优化:(一)bootchart 的配置和使用
|
安全 API Android开发
Android打开USB调试命令
【6月更文挑战第20天】
1008 1

热门文章

最新文章