软件编程
位置:首页>> 软件编程>> Android编程>> Android Studio中debug功能详解

Android Studio中debug功能详解

作者:哆啦U梦  发布时间:2022-05-22 08:16:01 

标签:Android,Studio,debug

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

运行debug模式

Android Studio中debug功能详解 

1. 进入debug

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

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

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

断点分类

Android Studio中debug功能详解 

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

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

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

Android Studio中debug功能详解

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

Android Studio中debug功能详解

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

Android Studio中debug功能详解

基本操作

Android Studio中debug功能详解 

从左到右依次

  1. 跳到当前执行的断点处

  2. Step Over 单步执行

  3. Step Into 进入正在执行的方法(必须是自定义的方法)、

  4. Focus Step Into 可以进入源码

  5. Step Out 跳出正在执行的方法

  6. Drop Frame 返回到当前方法的调用处

  7. Run to Cursor 运行到光标处

  8. Evaluate expression 计算选中的变量的值

Android Studio中debug功能详解 

从上到下依次为:

  1. 切换debugger模式

  2. 运行至下一断点,(从暂停)恢复程序

  3. 暂停程序

  4. 关闭调试

  5. 查看断点

  6. 隐藏断点

  7. 查看线程堆栈

高级操作和断点过滤

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

Android Studio中debug功能详解

条件过滤

Android Studio中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;
 }
}

日志断点

Android Studio中debug功能详解 

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

Android Studio中debug功能详解

实例过滤

Android Studio中debug功能详解 打好断点,并设置触发断点的实例

Android Studio中debug功能详解

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

Android Studio中debug功能详解

类过滤

Android Studio中debug功能详解 

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

Android Studio中debug功能详解

执行次数断点

Android Studio中debug功能详解 Android Studio中debug功能详解

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

设置变量值

Android Studio中debug功能详解 

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

来源:https://blog.csdn.net/u013952370/article/details/52131007

0
投稿

猜你喜欢

  • 本文实例讲述了C#精确计算年龄的方法。分享给大家供大家参考。具体如下:该源码在vs2010测试通过using System;using Sy
  • 本文实例为大家分享了unity shader实现光照效果的具体代码,供大家参考,具体内容如下效果图:shader被附给了球。灯光需要在属性面
  • 自己定义的栈的接口,完全是按照栈的常用方法以及命名方式实现: 注意以下类,接口都是在一个命名空间下栈的接口:包括了常用的方法namespac
  • 本文实例讲述了C#数据结构之队列(Quene)。分享给大家供大家参考,具体如下:队列(Quene)的特征就是“先进先出”,队列把所有操作限制
  • 在最近写的一个天气APP中用到了圆形头像这样的一个样式,中间是圆形的头像(被圆形切割的图片),周围是一个带颜色的圆环。如下图所示,今天就来说
  • 一:前言最近老师布置了给多级菜单的作业,感觉蛮有意思的,可以提升自己的逻辑!下面我写个简易版的多级菜单,本人还是菜鸟,欢迎各位给予宝贵的建议
  • FileStream缓冲读取和写入可以提高性能。FileStream读取文件的时候,是先将流放入内存,经Flush()方法后将内存中(缓冲中
  • 1. 将对象转换为JSON字符串,返回值为一个JSON字符串public static String toJson(Object value
  • 1.理解装箱简单地说,装箱就是将一个值类型的数据存储在一个引用类型的变量中。假设你一个方法中创建了一个 int 类型的本地变量,你要将这个值
  • 先写在前面,这说的Settings加载选项是指Settings这个应用显示在主界面的选项,这个修改需要对系统源码进行修改。Android 7
  • 对HDFS上的文件进行上传和下载是对集群的基本操作,在《HADOOP权威指南》一书中,对文件的上传和下载都有代码的实例,但是对如何配置HAD
  • 前言windows自带的游戏《扫雷》是陪伴了无数人的经典游戏,本程序参考《扫雷》的规则进行了简化,用java语言实现,采用了swing技术进
  • 本文为大家分享了Android中Drawable方法的详细使用方法,供大家参考,具体内容如下1. BitmapDrawable相关方法:新建
  • 问题现象描述:在Activity中控制播放时,按返回键退出应用后,音乐可在后台继续播放。重新进入app,音乐无法停止,重新点击开始播放音乐,
  • Java2在1.4中新增了一个关键字:assert。在程序开发过程中使用它创建一个断言(assertion)。,它的语法形式有如下所示的两种
  • 本文实例为大家分享了Java实现超市会员管理系统的具体代码,供大家参考,具体内容如下要求:借助集合框架及实用类实现该系统1、积分累计2、积分
  • 1.背景在项目中有些敏感信息不能直接展示,比如客户手机号、身份证、车牌号等信息,展示时均需要进行数据脱敏,防止泄露客户隐私。脱敏即是对数据的
  • 本文实例讲述了C#计算程序执行过程花费时间的方法。分享给大家供大家参考。具体如下:计算执行完程序花费的时间:void AddInfo(){
  • 前面两篇文章,分别简述了多线程的使用和发展历程,但是使用多线程无法避免的一个问题就是多线程安全。那什么是多线程安全?如何解决多线程安全?本文
  • 问题用过storm或者jstorm的都知道,如果在bolt代码中发生了没被catch住的异常,所在worker进程会退出。本文就从源码角度分
手机版 软件编程 asp之家 www.aspxhome.com