您好,欢迎来到二三娱乐。
搜索
您的当前位置:首页AS断点调试

AS断点调试

来源:二三娱乐

断点调试

最近其实很忙,但是发现Android studio在调试的时候还是有很多以前不知道的技巧,整理下资料总结分享下。

当前使用的版本是2.3.3,还没有去研究3.0 版本:

调试界面介绍

当我们在debug模式时候,调试界面会自己弹出来
[图片上传失败...(image-6c50d5-1511521215367)]

android studio大体为我们提供了7个功能区:

单步调试区
断点管理区
求值表达式
线程帧栈区
对象变量区
变量观察区
单步调试:

Step Over F8

[图片上传失败...(image-331daa-1511521215367)]

单步跳过,点击该按钮将导致程序向下执行一行。如果当前行是一个方法调用,此行调用的方法被执行完毕后再到下一行。

Step Into F7

[图片上传失败...(image-ce0615-1511521215367)]

单步跳入,执行该操作将导致程序向下执行一行。如果该行有自定义的方法,则进入该方法内部继续执行,需要注意如果是类库中的方法,则不会进入方法内部。

Force Step Into Alt +Shift +F7 强制跳入

[图片上传失败...(image-50a4ab-1511521215367)]

强制单步跳入,和step into功能类似,主要区别在于:如果当前行有任何方法,则不管该方法是我们自行定义还是类库提供的,都能跳入到方法内部继续执行

Drop Frame

[图片上传失败...(image-358fd1-1511521215367)]

没有好记的名字,大意理解为中断执行,并返回到方法执行的初始点,在这个过程中该方法对应的栈帧会从栈中移除.换言之,如果该方法是被调用的,则返回到当前方法被调用处,并且所有上下文变量的值也恢复到该方法未执行时的状态

public class DebugDemo {
    private String name = "default";

    public void alertName() {
        System.out.println(name);
        debug();
    }

    public void debug() {
        this.name = "debug";
    }

    public static void main(String[] args) {
        new DebugDemo().alertName();
    }
}

当你在调试debug()时,执行该操作,将回调到debug()被调用的地方,也就是alertName()方法。如果此时再继续执行drop frame,将回调到alertName()被调用的地方,也就是main().

Force Run to Cursor

[图片上传失败...(image-19b344-1511521215367)]

Alt +F9 可以忽视已经存在的断点,跳转到光标所在处.举个简单例子说明下:
比如现在第10行,此时我想调试18行而又不想一步一步调试,能不能一次到位呢?我们只需要将光标定位到相应的位置,

执行Evaluate Expression,就相当于在调试行之前嵌入了一个交互式解释器,那么在该解释器中我们能做什么呢?在这里,我们可以对result进行求值操作:对着你想要求值得位置点击鼠标右键,选择evaluate Expression.此时会显示如下:

[图片上传失败...(image-b034f3-1511521215367)]

Return
[图片上传失败...(image-6f2c7b-1511521215367)]

点击该按钮会停止目前的应用,并且重新启动.换言之,就是你想要重新调试时,可以使用该操作,嗯,就是重新来过的意思.

Pause Program

[图片上传失败...(image-22cda2-1511521215367)]

点击该按钮将暂停应用的执行.如果想要恢复则可以使用下面提到的Resume Program.

Resume Program

[图片上传失败...(image-e472f4-1511521215367)]

F9执行下一个断点在很多情况下,我们会设置多个断点以便调试。在某些情况下,我们需要从当前断点移动到下一个断点处,两个断点之间的代码自动被执行,这样我们就不需要一步一步调试到下一个断点了,省时又省力

Stop

[图片上传失败...(image-20cd14-1511521215367)]

点击该按钮会通过相关的关闭脚本来终止当前进程.换言之,对不同类型的工程可能有不同的停止行为,比如:对普通的Java项目,点击该按钮意味着退出调试模式,但是应用还会执行完成.而在Android项目中,点击该按钮,则意味这app结束运行.

View Breakpoints

[图片上传失败...(image-6b6098-1511521215367)]

点击该按钮会进入断点管理界面,在这里你可以查看所有断点,管理或者配置断点的行为,如:删除,修改属性信息等:

Mute Breakpoints

[图片上传失败...(image-77447f-1511521215367)]

使用该按钮来切换断点的状态:启动或者禁用.在调试过程中,你可以禁用暂时禁用所有的断点,已实现应用正常的运行.该功能非常有用,比如当你在调试过程中,突然不想让断点干扰你所关心的流程时,可以临时禁用断点.

Show Method Return Values

调试过程中启用该功能,将在变量区显示最后执行方法的返回值.举个例子来说,首先,关闭该功能,我们调试这段代码并观察其变量区:
[图片上传失败...(image-16c0dd-1511521215367)]

这里写图片描述

开启该功能之后,再来观察变量区的变化:

[图片上传失败...(image-b20cba-1511521215367)]

这里写图片描述

继续往下调试:

[图片上传失败...(image-2eb5c9-1511521215367)]

这里写图片描述

继续往下调试:

[图片上传失败...(image-3697ad-1511521215367)]

调试的两种方式

到目前,调试的相关基础我们已经介绍完了,但是不少童鞋对Android Studio中
[图片上传失败...(image-a1ac03-1511521215367)]

Debug:以调试模式安装运行,断点可以在运行之前设置,也可在运行后设置,是多数人最常用的调式方式

Attach process:和Debug方式相比,能够将调试器attach到任何正在运行的进程。比如,我们可以通过attach process到想要调试的进程。然后,在需要的地方设置相关断点即可。

Copyright © 2019- yule263.com 版权所有 湘ICP备2023023988号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务