Android Studio中debug功能详解

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

运行debug模式

1. 进入debug

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

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

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

断点分类

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

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

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

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

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

基本操作

从左到右依次

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

从上到下依次为:

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

高级操作和断点过滤

点击上一张图中的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操作,这项强大的功能对需要不同数据进行判断的情况提供了极大地便利。

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

(0)

相关推荐

  • Android studio 使用Debugger问题(代码中含有ndk)

    NDK NDK 是 Native Developmentit的缩写,是Google在Android开发中提供的一套用于快速创建native工程的一个工具. 使用这个工具可以很方便的编写和调试JNI的代码. NDK可从官网或AndroidDevTools(个人网站)下载. 1.出现错误: Error running app: Unable to open debugger port (localhost:8601): java.net.ConnectException "Connection re

  • Android Studio 报错“app:processDebugResources"解决方法

    Android Studio 报错"app:processDebugResources"解决方法 Android Studio项目Build的时候报了这么一个错误: Error:Execution failed for task ':app:processDebugResources'. > com.android.ide.common.process.ProcessException: org.gradle.process.internal.ExecException: Pro

  • 浅谈Android Studio如何Debug对应so文件C/C++代码

    在C/C++跨平台开发中,我们知道在Windows上可以通过VS,进行单步断点调试,这非常方便.但是我们如果编译好的动态库so,想要跟踪下其流程及各个阶段,如,怎么跟踪FFmpeg/VLC等库内部demux流程,或是Codec流程呢?今天通过一个小Demo进行Debug库文件C/C++代码. 一,下载 NDK 和构建工具 要编译和调试本地代码(native code),你需要下面的组件: 1.The Android Native Development Kit (NDK) : 让你能在 Andr

  • Android Studio中debug功能详解

    本文为大家分享了Android Studio debug功能的具体使用方法,供大家参考,具体内容如下 运行debug模式 1. 进入debug - 点击图中红色圆圈圈起的左边绿色按钮,运行app的debug模式,快捷键Shift+F9 - 点击图中红色圆圈圈起的右边按钮,可以选择正在运行的进程attach debugger 1. 打断点:鼠标点击编辑框左侧,出现红色圆点 断点分类 这张图可以看出断点也有行断点.方法断点.字段断点.异常断点.其实打断点仔细观察也可以发现它们的标识图片是不同的,就是

  • Android pdf viewer在android studio应用问题说明详解

    之前一直是做.NET开发的,最近需要弄一个新闻app,能力有限,只能借助HTML5 WebAPP+android studio来完成这项工作. android studio主要用WebView来加载发布好的WebApp,打包生产APP. 其中由于显示一些pdf文档,所以研究了一下,记录一下心得,同时也希望帮助到新手们. android 显示网络pdf,基本原理:先将pdf文件通过DownloadManager下载到手机sdk某个文件夹中,然后通过android-pdf-viewer插件进行显示.

  • sweet alert dialog 在android studio应用问题说明详解

    看到这个sweet-alert-dialog很亲切,因为前端开发本人用的提示就是这个js插件,java牛人很厉害,直接弄成一个java包插件,Good! 下面记录如何引用到工程,并使用: sweet-alert-dialog插件可以直接到github上下载 地址:https://github.com/pedant/sweet-alert-dialog 或者直接到发布好的页面下载: https://github.com/pedant/sweet-alert-dialog/releases 我下载的

  • 用Android实现京东秒杀功能详解

    首先看效果图: 京东秒杀是两个小时一个场次,我们获取到场次后,通过场次+两个小时后,获取到最终的时间,拿最终时间的时间戳,与当前时间时间戳相减,求得剩余的小时,分钟,秒数,即可实现倒计时功能! 具体代码实现如下: 1.布局页面activity_seckill.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.andr

  • python中print()函数的“,”与java中System.out.print()函数中的“+”功能详解

    python中的print()函数和java中的System.out.print()函数都有着打印字符串的功能. python中: print("hello,world!") 输出结果为:hello,world! java中: System.out.print("hello,world!"); 输出结果为:hello,world! 我们可以看到,这两个函数的用法是一样的 print()函数还有这种用法: print("1+1=",1+1) 输出结

  • 利用Kotlin如何实现Android开发中的Parcelable详解

    坑 先来看看 Android Studio 给的自动实现. 新建一个数据类,让它实现 Parcelable data class Worker( var id: Int, var name: String, var tasks: MutableList<Int> ) : Parcelable 使用 Android Studio 自带的 Add Parcelable Implementation ,然后你就得到了... data class Worker( var id: Int, var na

  • Kotlin在Android工程中的应用详解

    Kotlin在Android工程中的应用 原文链接 简介 Kotlin是由JetBrains设计的开放源码的编程语言,它正在Java开发者中变得越来越流行.Kotlin通常被吹捧为Java的继承者,相比较Java而言,Kotlin提供更为丰富的开发经验,因为它更现代,更具表现力和更简介. 如果你在寻求Android开发的可替代编程语言,那么应该试一下Kotlin.使用Kotlin,你可以很容易的在Android工程中替代Java或者与Java混合使用. 本文接下来将介绍在Android Stud

  • Android实现微信支付功能详解

    1.集成微信支付SDK: 在build.gradle中,添加如下依赖 compile 'com.tencent.mm.opensdk:wechat-sdk-android-with-mta:+' 2.设置微信支付回调页面: 路径:项目包名.wxapi 名称:WXPayEntryActivity public class WXPayEntryActivity extends Activity implements IWXAPIEventHandler { private IWXAPI api; @

  • Android开发中LayoutInflater用法详解

    本文实例讲述了Android开发中LayoutInflater用法.分享给大家供大家参考,具体如下: 在实际开发中LayoutInflater这个类还是非常有用的,它的作用类似于findViewById().不同点是LayoutInflater是用来找res/layout/下的xml布局文件,并且实例化:而findViewById()是找xml布局文件下的具体widget控件(如Button.TextView等). 具体作用: 1.对于一个没有被载入或者想要动态载入的界面,都需要使用Layout

  • Android 应用中插入广告详解及简单实例

    想必大家都知道,国内的Android应用基本都是免费的,那么开发者如何获得收入呢?应用中插入广告是一个比较常用的盈利手段.本文就讲解如何在Android应用中插入广告. 国内的广告平台有很多,用户数量比较多的有万普,有米,多普.下面就不一一介绍了,免得说我打广告.本文以万普为例. 1.首先去万普官网下载sdk,把sdk里面的jar包导入到项目的lib目录下.        2.修改AndroidManifest.xml文件. 确保应用具有以下几项权限: XML/HTML代码 <uses-perm

随机推荐