Android studio 断点调试、日志断点

目录

      • 参考文章
      • 参考文章
      • 1、运行调试
        • 2、调试操作
        • 3、断点类型
          • 行断点的使用场景
          • 属性断点的使用场景
          • 异常断点的使用场景
          • 方法断点的使用场景
          • 条件断点
          • 日志断点
      • 4、断点管理区

参考文章

参考文章

1、运行调试

开启 Debug 调试模式有两种方式:
在这里插入图片描述
Debug Run:直接以 Debug 模式运行 APP,该模式的优点是可以调试程序启动相关的代码, 例如 Application.onCreate()。

Attach To Process:在程序运行中选择进程来调试,该模式的优点是随时可开启、关闭 Debug 模式,使用灵活方便。

注意:Debug Run 会导致程序整体变慢,建议使用等待调试,使用该方式可以在启动应用后处于等待状态,在开启调试后,应用才会走初始化流程,有两种方式开启等待断点:
  方法1:「开发者选项 - 选择调试应用」的方式来调试应用启动阶段代码。具体方式为「选择调试应用」-> 「运行应用」-> 「Attach To Process」,然后等待断点执行即可。
  方法2:使用adb命令adb shell am set-debug-app -w --persistent 包名开启,「-w」即表示应用启动时等待调试程序;关闭使用adb shell am clear-debug-app。

2、调试操作

在这里插入图片描述

  1. Show Execution Point(Alt+F10) :跳到当前执行的断点处。
  2. Step Over(F8):单步执行,执行到当前行的下一行。
  3. Step Into(F7):进入正在执行的方法。
  4. Focus Step Into(Alt+shift_F7):同3,但是可以进入源码,在3无法进入的情况下,可以尝试该操作。
  5. Step Out(shift F8):跳出正在执行的方法。
  6. Drop Frame:返回到当前方法的调用处。
  7. Run to Cursor(Alt+F9):运行到光标处(光标必须在当前断点位置后)。
  8. Evaluate expression:计算选中的变量的值。

3、断点类型

断点分为以下类型:
行断点: 当执行到此行是停止执行,等待调试。
属性断点:打在类的成员变量上,当变量初始化或变量的值改变时触发断点。
异常断点:当抛出指定异常时触发断点。
方法断点:当需要知道一个方法的调用方时。
条件断点
日志断点

行断点的使用场景
属性断点的使用场景

当你遇到一个问题,并且怀疑是某个属性值的变化导致的,可以设置属性断点来跟踪这个属性的变化情况,以便快速定位问题所在
调试属性值变化:当你想要追踪某个对象属性的变化情况时,可以设置属性断点。例如,你可能想要查看一个变量何时被修改,以及修改后的新值是什么。

异常断点的使用场景

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,这样就会留下的线索比较多,可以使我们快速的找到问题得根源;
举例说明,首先我们添加一个异常断点,单击
然后在弹出的对话框中进行如下设置
在这里插入图片描述

在这里插入图片描述
假如我们只关心空指针异常可以进行如下设置
在这里插入图片描述
选中空指针异常即可,我们人为设置一个空指针异常来看下运行效果:
在这里插入图片描述

方法断点的使用场景

如下所示,有个接口 IMethodTest,同时有两个类 MethodTestImpl1 和 MethodTestImpl2 实现了该接口,在 IMethodTest 的 printMethod() 上打上方法断点
在这里插入图片描述在代码中实例化了 MethodTestImpl2 来调用 printMethod() 。
在这里插入图片描述
最后当 Debug 到该方法断点时,会自动走到 MethodTestImpl2 的 printMethod() 的实现中

条件断点

Ctrl + Shift + F8 条件断点
所谓的条件断点就是在特定条件发生的断点,也就是,我们可将某个断点设置为只对某种事件感兴趣,最典型的应用就是在列表循环中,我们希望在某特定的元素出现时暂停程序运行。假如我们有一个数组里面有1、2、3、4、5五个值,我们想在值等于3的时候停下来,可以设置条件断点;
在这里插入图片描述
右击断点,在弹出的对话框中设置相应的条件即可,我们运行一下看下效果
在这里插入图片描述

日志断点

日志断点
很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。但是这样做的问题在于我们需要重新编译运行程序,并且添加了很多无谓的代码且不好管理,这个时候我们可以使用日志断点;该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4、断点管理区

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

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

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

相关文章

windows下C++的反射功能

概述 c/c如果在日志中查看某个结构体/类的每个变量名,变量值信息,只能通过printf逐个格式化,非常繁琐,如何做到类似protobuff转json的序列化功能呢?该dll库先通过分析pdb文件获取结构体/类的变量名称、变量地址&#…

vue3将页面导出成PDF文件(完美解决图片、表格内容分割问题)

vue3将页面导出成PDF文件(完美解决图片、表格内容分割问题) 1、安装依赖2、在utils中创建htmlToPDF.js文件3、在vue中引入并使用 1、安装依赖 npm install --save html2canvas // 页面转图片 npm install jspdf --save // 图片转pdf2、在utils中创建h…

数据驱动成功:小程序积分商城的数据分析

在当今数字化时代,数据被认为是企业成功的关键。小程序积分商城是一种流行的营销工具,可帮助企业吸引和留住客户,并提供有关客户行为和偏好的宝贵数据。本文将深入探讨如何通过数据分析实现小程序积分商城的成功,包括数据的收集、…

Linux内核 6.6版本将遏制NVIDIA驱动的不正当行为

Linux 内核开发团队日前宣布,即将发布的 Linux 6.6 版本将增强内核模块机制,以更好地防御 NVIDIA 闭源驱动的不正当行为。 Linux 内核开发团队日前宣布,即将发布的 Linux 6.6 版本将增强内核模块机制,以更好地防御 NVIDIA 闭源驱…

linux shell操作- 02 常用命令及案例

文章目录 常用命令 续 常用命令 续 定时任务 通过文本编辑cron任务,实现定时操作 分 小时 天 月 星期 绝对路径sh or cmd* 表示每个xxx,如每个小时每小时的第三分钟执行cmd-> 03 * * * * /home/lauf/scraw.sh每天的第5、8个小时执行-> 00 5,8 * *…

Golang反射相关知识总结

1. Golang反射概述 Go语言的反射(reflection)是指在运行时动态地获取类型信息和操作对象的能力。在Go语言中,每个值都是一个接口类型,这个接口类型包含了这个值的类型信息和值的数据,因此,通过反射&#x…

C/C++—Inline关键词

1、引入 inline 关键字的原因 在 c/c 中,为了解决一些频繁调用的小函数大量消耗栈空间(栈内存)的问题,特别的引入了 inline 修饰符,表示为内联函数。 在系统下,栈空间是有限的,假如频繁大量的…

大二上学期学习计划

这个学期主要学习的技术有SpringBoot,Vue,MybatisPlus,redis,还有要坚持刷题,算法不能落下,要坚持一天至少刷2道题目,如果没有布置任务就刷洛谷上面的,有任务的话就尽量完成任务&…

win11 Windows hello录入指纹失败解决方法

刚换了xps,启用了administrator账号,win11专业版,发现使用Windows hello录入指纹时,只要一录指纹就立即出错 尝试卸载重装设备驱动--无效 把Windows update更新到最新--无效 最后查到,是Windows对administrator账户进…

在MuJoCo环境下详细实现PPO算法与Hopper-v2应用教程: 深度学习强化学习实战指南

第一部分:简介与MuJoCo环境的配置 1.简介 强化学习已经在许多任务中展现了其强大的能力,从简单的游戏到复杂的机器人控制。今天,我们将集中讨论PPO(Proximal Policy Optimization)算法,一个已经被证明在多种任务中具有卓越性能的强化学习算法。特别地,我们将在MuJoCo模…

【React】React入门

目录 一、何为React二、React与传统MVC的关系三、React的特性1、声明式编程①、实现标记地图 2、高效灵活3、组件式开发(Component)①、函数式组件②、类组件(有状态组件)③、一个组件该有的特点 4、单向式响应的数据流 四、虚拟DOM1、传统DOM更新①、举…

配置Swagger开发环境有效,生产环境无效

安全扫描:通用信息泄漏【未授权访问ip:端口号/swagger-ui.html】 步骤一:配置启用变量【开发环境可用生产环境不可用】 application-dev.yml: swagger:enable: true application-pro.yml: swagger:enable: false 步骤二:根据配置变量控…

three3D的vite+vue版本基础代码

自己稍微处理一下目录结构 <script setup>// 导入three.js import * as THREE from three// 创建场景 const scene new THREE.Scene();// 创建相机 const camera new THREE.PerspectiveCamera(45, //视角window.innerWidth / window.innerHeight, //宽高比0.1, // 近平…

Ajax fetch navigator.sendBeacon 三个的区别

Ajax、fetch 和 navigator.sendBeacon 是用于发送网络请求的不同方法。 Ajax: Ajax 是一种传统的用于发送异步请求的技术。它使用 XMLHttpRequest 对象来发送数据和接收响应。通过创建 XMLHttpRequest 对象&#xff0c;你可以通过调用其 open() 方法指定请求的类型和 URL&#…

【YOLOV5】YOLOV5添加OTA

当前YOLOV5版本为7.0 第一步 在utils/loss.py添加ComputeLossOTA import torch.nn.functional as F from utils.metrics import box_iou from utils.torch_utils import de_parallel from utils.general import xywh2xyxyclass ComputeLossOTA:# Compute lossesdef __init__(…

Android开源 日志框架 LogDog V2.3.1

目录 一、简介 二、下载使用 添加jitpack 仓库 添加依赖: 三、更改 1、 LogDogV2.3.1初始化: 2、通过上面的初始化 &#xff0c;已经知道IJsonEngine 优化了泛型参数&#xff0c;采用 Object/Any 3、优化空异常的判断&#xff0c;哪怕打印变量是NULL LogDog会打印“nul…

05-Flask-Flask查询路由方式

Flask查询路由方式 前言命令行方式代码实现返回所有路由 前言 本篇来学习下Flask中查询路由的方式 命令行方式 # window 用set linux 用 export set FLASK_APPtest_6_flask运行发方式# 打印所有路由 flask routes代码实现返回所有路由 # -*- coding: utf-8 -*- # Time …

ElementPlus·面包屑导航实现

面包屑导航 使用vue3中的UI框架elementPlus的 <el-breadcrumb> 实现面包屑导航 <template><!-- 面包屑 --><div class"bread-container" ><el-breadcrumb separator">"><el-breadcrumb-item :to"{ path:/ }&quo…

Docker相关命令

Docker的官网下载docker&#xff0c;按照说明进行安装。 下载Nacos镜像&#xff1a;docker pull nacos/nacos-server 运行以下命令来启动Nacos容器&#xff1a;docker run --name nacos -e MODEstandalone -p 8848:8848 -d nacos/nacos-server 会创建一个名为"nacos"…

基于FPGA点阵显示屏设计-毕设

本设计是一1616点阵LED电子显示屏的设计。整机以EP2C5T144C8N为主控芯片,介绍了以它为控制系统的LED点阵电子显示屏的动态设计和开发过程。通过该芯片控制一个行驱动器74HC154和两个列驱动器74HC595来驱动显示屏显示。该电子显示屏可以显示各种文字或单色图像,采用4块8 x 8点…