当前位置:   article > 正文

Android Studio中debug功能详解_androidstudio debug

androidstudio debug

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

运行debug模式

img

\1. 进入debug

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

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

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

断点分类

img

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

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

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

img

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

img

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

img

基本操作

img

从左到右依次

  1. 跳到当前执行的断点处
  2. Step Over 单步执行
  3. Step Into 进入正在执行的方法(必须是自定义的方法)、
  4. Focus Step Into 可以进入源码
  5. Step Out 跳出正在执行的方法
  6. Drop Frame 返回到当前方法的调用处
  7. Run to Cursor 运行到光标处
  8. Evaluate expression 计算选中的变量的值

img

从上到下依次为:

  1. 切换debugger模式
  2. 运行至下一断点,(从暂停)恢复程序
  3. 暂停程序
  4. 关闭调试
  5. 查看断点
  6. 隐藏断点
  7. 查看线程堆栈

高级操作和断点过滤

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

img

条件过滤

img

右击断点,可以设置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;
  }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

复制

日志断点

img

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

img

实例过滤

img

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

img

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

img

类过滤

img

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

img

执行次数断点

img

img

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

设置变量值

img

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

更多Android进阶指南 可以扫码 解锁 《Android十大板块文档》

1.Android车载应用开发系统学习指南(附项目实战)

2.Android Framework学习指南,助力成为系统级开发高手

3.2023最新Android中高级面试题汇总+解析,告别零offer

4.企业级Android音视频开发学习路线+项目实战(附源码)

5.Android Jetpack从入门到精通,构建高质量UI界面

6.Flutter技术解析与实战,跨平台首要之选

7.Kotlin从入门到实战,全方面提升架构基础

8.高级Android插件化与组件化(含实战教程和源码)

9.Android 性能优化实战+360°全方面性能调优

10.Android零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】

推荐阅读
相关标签