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

复制

日志断点

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零基础入门到精通,高手进阶之路

敲代码不易,关注一下吧。ღ( ´・ᴗ・` ) 🤔

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/725965.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【技术分享】求取列表需求的redis缓存方案

为了在Redis中实现一个高效的排行榜列表缓存方案,你可以使用有序集合(sorted set,即上文提到的zset)来存储产品的排行,同时使用散列(hash)来存储每个产品的相关信息。这样,你可以快速…

[数据结构初阶】栈

各位读者老爷好,鼠鼠我好久没写博客了(太摆烂了),今天就基于C语言浅介绍一下数据结构里面的栈,希望对你有所帮助吧。 目录 1.栈的概念及结构 2.栈的实现 2.1定义栈 2.2.初始化栈 2.3.入栈 2.4.出栈 2.5.获取栈…

c++中list的简单实现

文章目录 list介绍节点类(listNode)__list__iterator(迭代器类)operator-> list的成员函数empty_init() 初始化节点list(list<T>& lt) 拷贝构造clear() 清除链表~list() 析构insert() 插入erase() 删除push_back() 尾插push_front() 头插pop_back() 尾删pop_front…

zabbix监控中间件服务

zabbix监控Nginx 自定义nginx访问量的监控项&#xff0c;首先要通过脚本将各种状态的值取出来&#xff0c;然后通过zabbix监控。找到自定义脚本上传到指定目录/etc/zabbix/script/ 在zbx-client客户端主机操作 #创建目录&#xff0c;然后将脚本上传到该目录mkdir /etc/zabbix/…

C# Dictionary<string, string> 对key做筛选

​ 工作中遇到了一个筛选Dictionary的Key的需求&#xff0c;记录一下。 场景&#xff1a;筛选出所有不包含点&#xff08;.&#xff09;的键。 备选方法&#xff1a; 直接使用for循环遍历&#xff0c;代码量较大。 使用Linq。 最终方法&#xff1a; 选择使用Linq的where…

【JS】关于this的使用

this 前言一、this是什么&#xff1f;二、做什么&#xff1f;1.全局环境2.函数环境3.new实例对象4.apply、bind、call绑定4.1 apply()4.2 call()4.3 bind() 三、为什么用this&#xff1f;四、如何改变this&#xff1f;五、应用场景&#xff1f;总结 前言 痛点 经常写Vue项目&a…

2023 年 3 月青少年软编等考 C 语言一级真题解析

目录 T1. 字符长方形思路分析 T2. 长方形面积思路分析 T3. 成绩等级转换思路分析 T4. 机智的小明思路分析 T5. 寻找特殊年号思路分析 T1. 字符长方形 给定一个字符&#xff0c;用它构造一个长为 4 4 4 个字符&#xff0c;宽为 3 3 3 个字符的长方形&#xff0c;可以参考样例…

C++单例模式、工厂模式

一、单例模式 (一) 什么是单例模式 1. 是什么&#xff1f; 在系统的整个生命周期内&#xff0c;一个类只允许存在一个实例。 2. 为什么&#xff1f; 两个原因&#xff1a; 节省资源。方便控制&#xff0c;在操作公共资源的场景时&#xff0c;避免了多个对象引起的复杂操作…

Unity的相机跟随和第三人称视角二

Unity的相机跟随和第三人称视角二 展示介绍第二种相机模式远离代码总结 展示 我录的视频上可能看不太出来&#xff0c;但是其实今天的这个方法比原来写的那个方法更简便并且死角更少一些。 这里我也做了两个人物偏移的视角&#xff0c;按Q是原来的两个相机模式切换&#xff0c…

论文阅读笔记 | MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment

文章目录 文章题目发表年限期刊/会议名称论文简要动机主要思想或方法架构实验结果 文章链接&#xff1a;https://doi.org/10.48550/arXiv.2004.05508 文章题目 MetaIQA: Deep Meta-learning for No-Reference Image Quality Assessment 发表年限 2020 期刊/会议名称 Publi…

BSD-3-Clause是一种开源软件许可协议

BSD-3-Clause是一种开源软件许可协议&#xff0c;也称为BSD三条款许可证。它是BSD许可证家族中的一种&#xff0c;是一种宽松的许可证&#xff0c;允许软件自由使用、修改和重新分发&#xff0c;同时也保留了一些版权和责任方面的规定。 BSD-3-Clause许可证的主要特点包括以下…

Marin说PCB之POC电路layout设计仿真案例---01

最近娃哈哈饮料突然爆火&#xff0c;看新闻后才知道春晚的的时候宗老已经病的很严重了&#xff0c;现在也已经离我们而去了&#xff0c;宗老是一个值得我们尊敬爱戴的伟大企业家。于是乎小编我立马去他们的直播间买了一箱娃哈哈AD钙奶支持一下我们的国货。 中午午休的时候&…

vue3中全局变量的定义和获取

在vue项目中&#xff0c;我们知道vue2定义全局变量是在main.js文件将变量挂载到vue.prototype.name"lisi"&#xff0c;在页面通过this.name去调用。但是在vue3中&#xff0c;这个定义全局变量有所改变&#xff1a; const app createApp(App) app.config.globalProp…

Excel如何开启VBA进行二次开发

经常使用Excel做数据分析的朋友平时用的比较多的可能只是一些常用的内置函数或功能&#xff0c;比如求和函数、字符串分割函数、分类汇总、IF函数、VLOOKUP函数等。大多数人认为Excel强大是因为内置了大量的函数。其实&#xff0c;作为一名资深程序猿&#xff0c;个人认为&…

testvue-page

1403.vue <template><div class"error-page"><div class"error-code">4<span>0</span>3</div><div class"error-desc">啊哦~ 你没有权限访问该页面哦</div><div class"error-handle&q…

面试中最常问的10大Linux命令

引言 在信息技术领域中&#xff0c;对于Linux操作系统的精通已成为众多职位的基本要求&#xff0c;尤其对于系统管理员、DevOps工程师、后端开发者等角色更是至关重要。在这篇文章中&#xff0c;我们将深入探讨面试环节中频繁出现的10个核心Linux命令&#xff0c;结合其原理、…

kafka消费端消息去重方案

背景 我们在日常工作中&#xff0c;消费kafka消息是一个最常见的操作&#xff0c;不过由于kafka队列中经常包含重复的消息&#xff0c;并且消息量巨大&#xff0c;所以我们消费端总是需要先把消息进行去重后在消费&#xff0c;以减少消费端的压力&#xff0c;那么日常中我们一…

全量知识系统问题及SmartChat给出的答复 之21 语义关联+词扇+叙词库 之2

Q74. 我们是否可以把语义表征理解为所有语义因子分析的输出结果&#xff0c;换句话说就是是否可以把语义表征作为语义分析的结果的结构来存储分析结果呢 &#xff1f; 是的&#xff0c;语义表征可以被理解为语义分析的结果的结构化表示。语义表征是对语义信息的抽象和总结&…

redis 性能优化一

目录 前言 尾延迟 前言 说到redis 性能优化&#xff0c;优化的目的是什么&#xff1f;提高响应&#xff0c;减少延迟。就要关注两点&#xff0c;一是尾延迟&#xff0c;二是Redis 的基线性能。只有指标&#xff0c;我们的优化&#xff0c;才有意义&#xff0c;才能做监控以及…

玩一会小乌龟

滚滚长江东逝水&#xff0c;浪花淘尽英雄。 是非成败转头空。青山依旧在&#xff0c;几度夕阳红。 白发渔樵江渚上&#xff0c;惯看秋月春风。 一壶浊酒喜相逢。古今多少事&#xff0c;都付笑谈中。 画一个正方形 import turtle# 创建一个Turtle对象 t turtle.Turtle()# 循环…