wxxw

Debug调试

2020-04-02  本文已影响0人  奔跑的佩恩

前言

Android开发过程中,调试是一个十分重要的技能,有效的调试,可以尽快查找,定位问题,帮助快速解决问题,加快开发速度。调试的方式由很多种,其中用得比较广泛的有Debug调试log调试。其中Debug调试Androidstudio工具自带的一种调试方式,使用十分快捷,排查问题仔细,能有效的帮助找到问题。说来惭愧,开发这么多年,我一直是用Log打印调试,为啥不用Debug调试?因为不会用,然后逐渐远离它,最后的结果是:更不会。所以今天就来讲讲Debug调试的基本使用吧。

正文

第一步:准备一段用于调试的代码

先让我们准备一段简单的代码吧,后续的讲解均依赖此段代码:

    private void test() {
        int number=5;

        for (int i = 0; i < 10; i++) {
            i=getNumber(i,number);
            LogUtil.i("=======i====="+i);
        }
    }

    private int getNumber(int i,int number){
        if(i<number){
            return i+1;
        }else{
            return i+7;
        }
    }

这里,我们需要调试test()中的for循环,然后查看i值变化。

第二步:打断点

要调试for循环,所以在代码左侧打下断点,如下图:

image.png

第三步:点击debug按钮,开始调试

点击工具栏上的爬虫,开始调试。如下:

image.png

第四步:介绍几个调试按钮

启动调试以后,界面底部会展示调试的工具栏,如下:

image.png
可以看到,上面有好几个按钮,这是为了方便我们调试的,下面对几个按钮作用一 一介绍。
4.1 单步执行
image.png
Step Over(F8): 单步执行。代码会一步步执行,若执行过程成遇到方法体,不会进入该方法,而是继续走当前代码的下一步。
以上面代码为例。即在不断点击Step Over的时候,会不断执行for循环的代码,但不会进入到for循环方法体中的getNumber(i,number)方法中。
4.2 进入方法中
image.png
Step Into(F7): 进入方法中。以上面的for循环为例,当你点击Step Over单步执行到代码行i=getNumber(i,number);的时候,这时如果你想看看getNumber(i,number)是如何执行的,你可以点击Step Into按钮,跳到该方法内部查看getNumber(i,number)的执行过程。
4.3 展示所有与之关联的方法
image.png
Force Step Into(Alt+Shift+F7): 该按钮能展示你要调试的代码行与之有关的所有方法。以代码行i=getNumber(i,number);为例,当调试到该行时,你点击了Force Step Into按钮,frames窗口会罗列出所有与该代码有关联的方法,如下图:
image.png
这里,我们主要关注getNumber(...)test()以及onClick(...)方法,因为这几个方法都是设置到代码逻辑层的方法,而展示的剩下的方法,都是系统层的,无需关注。值得注意的是,点击每个方法,都可查看具体运行值。以我点击getNumber(...)为例,显示各变量值如下图:
image.png
此方法有助于帮助理解各方法间调用逻辑关系。
4.4 跳出方法
image.png
Step Out(Shift+F8): 跳出方法。与Step Into方法相对应,当你调试代码行i=getNumber(i,number);并已经进入到方法getNumber(i,number)中时,这时,你想结束查看getNumber(i,number)方法内部运行情况,并想继续回到外层for循环中进行调试的时候,你可以使用此按钮跳出getNumber(i,number)方法。
4.5 快速运行到下一断点
image.png
Run to Cursor(Alt+F9):快速运行到下一断点。当有多个断点调试的时候,可以迅速执行完当前断点,并记住任何已经调用过的方法,然后跳到下一断点处。

第五步:结束调试

当你想结束当前调试的时候,可以点击Androidstudio的工具栏上的结束调试按钮,该图标显示如下:

image.png
当然,在结束调试之后,别忘了将将之前调试时打下的断点清理掉。

ok,今天的内容就介绍到这里了,谢谢大家。

上一篇下一篇

猜你喜欢

热点阅读