zoukankan      html  css  js  c++  java
  • 学了一年的Android,还不会调试?你白学了!

    本文原创首发CSDN,本文链接 https://blog.csdn.net/qq_41464123/article/details/107141182,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,尤其是脚本之家、码神岛等平台,谢谢配合。


    目录

    零、前言

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

    1.1 Log.i()

    1.2 Log.e()

    1.3 Log.d()

    1.4 Log.v()

    1.5 Log.w()

    二、 Android程序调试

    2.1 加断点

    2.2 简单调试

    2.3 单步跳过

    2.4 单步跳入

    2.5 跳到下一断点

    2.6 停止调试


    零、前言

    开发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中输入以下代码

    public class MainActivity extends AppCompatActivity {
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            Log.e("zwz01","错误信息");
            Log.w("zwz02","警告信息");
            Log.i("zwz03","普通信息");
            Log.d("zwz04","调试信息");
            Log.v("zwz05","冗余信息");
    
        }
    }

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

    二、 Android程序调试

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


    本文原创首发CSDN,本文链接 https://blog.csdn.net/qq_41464123/article/details/107141182​​​​​​​,作者博客https://blog.csdn.net/qq_41464123 ,转载请带上本链接,尤其是脚本之家、码神岛等平台,谢谢配合。


    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程序,代码如下:

    public class MainActivity extends AppCompatActivity {
    
        public static int add (int x,int y){
            return x + y;
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            int a = add(1,2);
    
            int b = add(-1,-2);
        }
    }

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

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

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

    2.4 单步跳入

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

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

    2.5 跳到下一断点

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

    2.6 停止调试

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

  • 相关阅读:
    SQl语句学习笔记(二)
    Adaboost 算法
    降维PCA技术
    scanf 格式化字符串详解
    大小端模式和位域详解(转载)
    推荐系统开源软件列表汇总和点评(转载)
    遗传算法入门(转载)
    大白话解析模拟退火算法(转载)
    机器学习相关——协同过滤(转载)
    python面向对象之单例模式
  • 原文地址:https://www.cnblogs.com/yyzwz/p/13393211.html
Copyright © 2011-2022 走看看