Android Studio中debug功能详解

时间:2021-05-21

本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下

运行debug模式

1. 进入debug

- 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键Shift+F9

- 点击图中红色圆圈圈起的右边按钮,可以选择正在运行的进程attach debugger

1. 打断点:鼠标点击编辑框左侧,出现红色圆点

断点分类

这张图可以看出断点也有行断点、方法断点、字段断点、异常断点。其实打断点仔细观察也可以发现它们的标识图片是不同的,就是上图中每行前面的那四种不同的小红点。

行断点:当执行到此行是停止执行,等待调试。

属性断点:打在类的成员变量上,当变量初始化或变量的值改变时触发断点。当然也可以配合其他用法设置过滤。

方法断点:打在一个函数的首行,进行函数级别的调试,更可以打在JDK的源码里,查看函数调用。普通的断点是不能打在源码里的。

异常断点:当抛出指定异常时触发断点。AS可以在Breakpoints中点击左上角 + 号,选择Java Exception Breakpoints,来指定一个异常。

基本操作

从左到右依次

  • 跳到当前执行的断点处
  • Step Over 单步执行
  • Step Into 进入正在执行的方法(必须是自定义的方法)、
  • Focus Step Into 可以进入源码
  • Step Out 跳出正在执行的方法
  • Drop Frame 返回到当前方法的调用处
  • Run to Cursor 运行到光标处
  • Evaluate expression 计算选中的变量的值
  • 从上到下依次为:

  • 切换debugger模式
  • 运行至下一断点,(从暂停)恢复程序
  • 暂停程序
  • 关闭调试
  • 查看断点
  • 隐藏断点
  • 查看线程堆栈
  • 高级操作和断点过滤

    点击上一张图中的5查看断点可以打开下面的面板,这张面板提供了关于debug的许多高级功能:

    条件过滤

    右击断点,可以设置condition。如图所示,设置一个变量mJoinVaule.equals(“222”),点击Done。当在mJoinEt这个EditText中输入222时才会触发这个断点。

    在BreakPoints面板同样可以设置条件断点。

    测试代码

    下面是一段测试代码,用来测试后面的功能

    package com.jnxy.arithmetic.base;/** * Created by admin on 2016/8/5. */public class Person { int age; public void out() { System.out.println("age : " + age); } public Person(int age) { this.age = age; } public static void main(String [] args) { Person p1 = new Person(3); Person p2 = new Person(5); Person p3 = new Person(8); Man man = new Man(10, 10); Woman woman = new Woman(12, 12); Person[] persons = new Person[]{p1, p2, p3, man, woman}; for (Person person : persons) { person.out(); } }}class Man extends Person { int weight; public Man(int age, int weight) { super(age); this.weight = weight; }}class Woman extends Person{ int height; public Woman(int age, int height) { super(age); this.height = height; }}

    日志断点

    断点打在上方代码第27行,选中代码,同时设置Condition和Log evaluation expression,这样只有person.age==8时断点生效,才会在log打印表达式。当然,也可以值设置Log表达式。控制器输出如下图,可以看到只有age==8时才打印了toString().

    实例过滤

    打好断点,并设置触发断点的实例

    继续执行程序,当设置的实例调用方法时断点生效。

    类过滤

    首先设置Class Filter,内容为要过滤类的完整路径,设置为只有Man类调用方法断点生效,下图age==10,证明确实是Man类调用的方法。

    执行次数断点

    Pass Count和Condition具有相似之处,但Condition用途应该更广泛一些。

    设置变量值

    调试过程中,选中一个变量右键可以可以进行Set Value操作,这项强大的功能对需要不同数据进行判断的情况提供了极大地便利。

    以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

    声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。

    相关文章