Android Studio调试工具总结

article/2025/9/15 23:39:41
前言:写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;当我们的程序出现bug时,调试可以快速的找到bug。进入调试状态,我们可以清楚的了解程序的整个执行过程,可以对内存的数据进行监视。下面就简单总结一下调试的基本使用和一些调试的技巧。本文是通过查找网上的多方资源整理而来,如果有谬误的地方请大家指出,希望本文能对你有所帮助。

一、插入断点

选定要设置断点的代码行,在行号的区域后面单击鼠标左键即可

二、进入调试状态

设置好断点后,点击工具栏中的小臭虫(Debug)进入调试状态。
当一个应用进入调试状态后,Android Studio会弹出这样的Debug窗口,即调试者状态。我们在这里可以对我们的程序进行监视和调试。
IDE下方出现Debug视图,在①区域中显示了程序执行到断点处所调用过的所用方法,越下面的方法被调用的越早;在②区域可以给指定的变量赋值(鼠标左键选择变量,右键弹出菜单选择setValue...)。这个功能可以更加快速的检测你的条件语句和循环语句。在③区域中可以对某一个特定的变量进行监视,在高级调试部分会再次讲到。

三、常用的调试方式和快捷键

 1.常用调试功能及快捷键:

  • step into (F7):进入子函数 
  • step over (F8):越过子函数,但子函数会执行 
  • step out (Shift + F8):跳出子函数 
  • Run to Cursor (Alt + F9) 运行到光标所在的位置。
  • show Execution Point (Alt + F10) 快速定位当前调试的位置,并将该行高亮的显示出来。

 2.调试功能解释

  • step into:就是单步执行,遇到子函数就进入并且继续单步执行;例如当你执行到System.out.println("XXXX")时,使用这个功能时就会进入到System.out.println方法所在类的println方法下(当然这样做事没有必要的,如果进入了想跳出执行step out就可以了。) 
  • step over:是在单步执行时,在函数内遇到子函数时不会进入子函数内单步执行,而是将子函数整个执行完再停止,也就是把子函数整个作为一步。例如上面的例子中,System.out.println("XXXX")执行完后是跳到下一个语句中而不会跳进去,这个功能也是比较常用的,一直按F8就可以了。
  • step out:就是但单步执行到子函数内时,用step out就可以执行完子函数余下部分,并返回到上一层函数。
  • Run to Cursor:运行到光标所在的位置,执行该功能后,不论你执行到哪里,程序都可以执行到你光标的所在行下。 
  • show Execution Point:当你不知道程序当前已经执行到哪里的时候,就可以使用这个功能,Android Studio 会跳到执行行所在的界面,并将该行高亮的显示出来。

四、高级调试功能

以上的调试方法只是简单调试,下面介绍一些比较高大上的调试功能。

 1、Evaluate Expression

这个功能非常实用,可以在断点处直接进入一个求值环境,在这里你可以执行任何你感兴趣的表达式;如下图:
比如在断点处有一个对象 object ,如果你要查看它的某个属性很简单,在Debug窗口就能看到,但是如果你想要执行它的某个方法看看结果是什么呢?借助这个可以实现。当然它的功能远不止这么多,相当于直接进入了一个 REPL 环境,非常实用。忘了说了,快捷键 Alt + F8 :P

 2、条件断点 

假设你的断点在一个列表的循环里面,可是你只对这个列表的某一个元素感兴趣,只想在遇到这个元素的时候才断下来;你是一直人肉 F9 直到满足条件吗?条件断点就是满足这种需求的,顾名思义,在特定条件下的断点。使用起来也非常简单,在你的断点上鼠标有件会出现一个小窗口,写上条件即可。

3、日志断点

很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。
但是这么做一个问题就是,我们添加了日志代码需要重新编译;在没有 Instant Run 之前的黑暗时代这么做是非常痛苦的,每次编译少则几十秒,多则几分钟;这样无意义的等待简直就是折磨;其实,除了热部署工具,我们还可以使用日志断点解决这个问题。
首先我们在想要输出信息的地方下一个断点;然后右键这个断点,在出现的设置框里面把这个断点的 suspend 属性设置为 False ,这样虽然叫做“断点”,但是并不会真正断下来;然后,我们在 log message 里面填上我们想要输出的日志信息。如下图(注意标红位置):
这样,每次代码执行到这个断点的位置,这个可爱的断点并不会使我们的程序停下来,而是输出我们告诉它的日志信息,然后继续执行;非常方便。

 4、方法断点

传统的调试方式是以行为单位的,所谓单步调试;但是很多时候我们关心的是某个函数的参数,返回值;(回想一下我们使用日志的时候打印的最多的信息难道不是函数的参数和返回值吗?)使用方法断点,我们可以在函数级别进行调试;如果经常跳进跳出函数或者只对某个函数的参数感兴趣,这种类型的断点非常实用。具体使用方法有两种方式;最简单的是在你感兴趣的方法头那一行打上断点,这时候你会发现断点图标有点不一样,这就是方法断点了,如下图:
另外一种方式是通过 断点设置窗口 , 后面介绍。

 5、异常断点

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,只要发生命案了(异常),第一时间保存现场,这样什么指纹之类的线索就会清晰很多,坏蛋就算想逃也是插翅难飞啊。
Android Studio给了我们这个能力!那就是 异常断点 !可以在特定异常发生的时候,直接让整个程序断下来;如果你对所有异常感兴趣,直接 Throwable 即可。
具体做法是,进入 Run -> View BreakPoints 或者使用快捷键打开断点设置窗口;如下图:
点击左上角的 :heavy_plus_sign: ,会出现一个选择框;选择 Exception Breakpoint ;然后会出现一个对话框,选择你感兴趣的异常:

6、Field WatchPoint

在上面我们添加异常断点的时候,点击加号的时候,有四个选项;第一个就是我们前面所说的第二种方法断点的添加方式,第三个是异常断点,那么第二个 Field WatchPoint 是干什么的呢?
有没有这样一种场景:你发现某个值莫名其妙滴不知道什么时候被谁给修改了,罪魁祸首是谁?Java虽然是值传递,但是引用也可以是值;对象全部存放在堆上面,而堆是被所有线程共享的,因此在非常复杂的场景下,你根本不知道这些共享变量被谁修改了,这样非常危险;在多线程环境下,不变性是一个很重要的特性,我们看到高并发的语言诸如 Erlang , Scala 对于这种不变性都有着某种程度的支持。
好吧,扯远了;那么我们怎么揪出这个修改我们值的捣蛋鬼呢?那就是这个 Field WatchPoint 的功能了;使用它我们可以在某个 Field 被访问或者修改的时候让程序断下来;完美解决这个问题。
下断点的方式和方法断点类似,也有两种;第一种是直接在某个字段的声明处下断点,这时候断点图标会改变,如下图:
右键这个断点我们可以进行一些设置,比如默认是被修改的时候断下来,你也可以改为每次访问这个字段就断下来。
另外一种方式是 Run -> View BreakPoint 打开设置,与异常断点类似。
后续:由于本人能力有限,只能总结到这里,其实关于调试的功能还有很多需要总结,会在以后的时间里对文章进行修改和增加。希望本文能让大家有所收获。^-^
以下是关于Android Studio调试方面的博文,供大家查看
相关链接:
Android Studio你不知道的调试技巧
[Android Studio 权威教程]断点调试和高级调试
Android Studio调试功能使用总结【转】

http://chatgpt.dhexx.cn/article/MpE1qLZs.shtml

相关文章

串口调试、udp 调试、tcp 调试,websocket 调试,通讯调试工具

简介 一个通讯测试工具,QSAK(Qt Swiss Army Knife)是一款基于Qt开源框架打造的多功能、跨平台调试工具。目前支持串口调试、udp 调试、tcp 调试及 websocket 调试等。支持 Windows、Linux、raspberry pi 等平台。 免费、开源、绿色、免安装…

chrome--浏览器调试工具详解

chrome浏览器开发调试工具打开方式:F12键 一,常用面板介绍 1.定位小箭头按钮(左边第一个): 选中Elements面板,并启动该按钮,可以在页面中定位相应元素的源代码位置,或者选择源代码位置可定位到页面相应的元…

通讯调试工具推荐

CommBox通讯调试工具-简单说明 工具支持:串口通讯、串口代理、TCP、UDP、Telnet、Ping、TFtp、串口监视、以太网嗅探等通讯测试 1、本工具支持预定义命令,命令可以进行分组,由树形控件管理。点击“命令编辑”即可编辑预…

modbus调试工具的使用

modbus调试工具的使用分为2部分,2者互相不影响,可以单独使用。 一、根据IP进行模拟通信 二、根据COM进行模拟通信 一、根据IP进行模拟通信 1.安装完成ModbusPollSetup64Bit后,输入注册码进行注册;安装完成ModbusSlaveSetup64Bi…

两款常用的 MQTT 调试工具

文章目录 一、前言二、预备知识三、MQTTBox1、介绍2、下载3、入门使用4、负载测试 四、MQTT.fx1、介绍2、下载3、入门使用4、JS 脚本 一、前言 我们可以使用 MQTT 客户端来测试 MQTT 的通讯功能,这里介绍常用的两款工具 MQTTBox 和 MQTT.fx 。 二、预备知识 MQTT…

简易Window BLE调试工具

简易Windows BLE调试工具 一、简介 Windows BLE调试工具是一款运行在Windows下的BLE调试软件,实现了扫描、连接、获取BLE设备上的服务以及向服务写入和读取数据的功能。 二、运行要求 系统需要使用Windows 10及以上的版本;需要电脑带有蓝牙功能或者使用外接蓝牙…

wsdl在线调试工具

1.下载soapui 2.进行调试 注:1.wsdl地址在测试服务器上一定要能联通 2.测试时如果是xml标签,需要进行转义 http://www.ku51.net/rehtml/ 3.在wsdl地址后面拼接?wsdl能够看到具体的接口信息 3.使用post进行请求示例

【sscom】 串口调试工具

这款串口调试工具我是经常使用的,这里推荐给大家,功能比较全面。 1、正常的串口调试功能。 2、可以保存一些经常发送的数据内容。 3、可以作为网络调试工具使用。 关注公众号:逸趣汇 微信号:yiquhui666 发送:010201 …

移动端开发调试工具

1、抓包工具Charles、Fiddler 平时只用抓取各种网络,需要设置手机的wifi代理 推荐指数2颗星 2、vConsole、eruda等调试库 这个方法需要在页面中插入一段 JS 脚本,这里以vConsole为例,导入vconsole.min.js,并实例化,…

串口通信工具android,串口调试工具手机版

串口调试工具手机版是一款针对OTG接口开发的串口调试应用,这款软件提供了文本、HEX码等多种格式,支持12个自定义按钮,支持自动重发功能,并提供了15种常用波特率,需要的朋友可以来西西下载串口调试工具手机版进行使用 串…

HTTP调试工具

HttpDebug HTTP协议调试工具 V1.02 英文绿色免费版 https://www.jb51.net/softs/43863.html postman的使用方法详解!最全面的教程 https://www.cnblogs.com/jpfss/p/9082542.html 一 简介 Postman是一款功能超级强大的用于发送 HTTP 请求的 Chrome插件 。做web页…

Windows下的TCP/UDP网络调试工具-NetAssist以及Linux下的nc网络调试工具

已剪辑自: https://blog.csdn.net/ccf19881030/article/details/109370384 一、Windows下的网络调试工具-NetAssist 1、TCP服务端和客户端测试2、UDP服务端和客户端测试 二、Linux下的网络调试命令工具-nc 1、什么是nc2、nc的作用3、在CentOS7中安装nc命令工具[4、NetCat 官方…

串口调试工具推荐

作者:三十三重天 博客: http://www.zhouhuibo.club 沉淀、分享、成长,让自己和他人都能有所收获!😜 在进行嵌入式开发时,总是要面对着来自终端的各种报文。不同的设备、终端厂商都有一套自己的报文协议,如何…

PostWomen websocket 调试工具

PostWomen是一款websocket调试工具,补充了post man没有websocket调试的遗憾 源代码 https://gitee.com/ichiva/post-women演示地址 新版浏览器已不支持 ws 链接,请使用 wss 链接实测本地 ws 链接任然可用,如 ws://127.0.0.1 或 ws://localhost http://ichiva.gi…

嵌入式开发<网络调试工具>

嵌入式开发<网络调试工具> 前言1&#xff0c;设备参数分类2&#xff0c;设备参数修改3&#xff0c;调试工具软件 一、软件界面二、功能说明1.网络设置1&#xff09;TCP Client设置A&#xff0c; 协议类型&#xff1a;B&#xff0c; 远程主机地址&#xff1a;C&#xff0c…

Linux串口调试工具

linux系统下串口调试和应用开发时配合串口调试工具必不可少。下面对常用的一些串口工具做一下汇总&#xff0c;包含&#xff1a;minicom/cutecom/picocom/putty/tty_uart 可供工程师参考。 实验环境&#xff1a; OS: Ubuntu16.04 ------------------------------------------…

android js调试工具,鬼鬼JS调试工具

鬼鬼JS调试工具是一款非常实用的JS调试软件&#xff0c;这里带给大家最新版本&#xff0c;新增了一些解密等功能&#xff0c;对于JS调试工作者或者感兴趣的朋友提供稳定和强大的调试支持。鬼鬼JS调试工具具有直观的界面设计&#xff0c;功能十分全面&#xff0c;有需要的朋友欢…

前端必须知道的调试工具

Bug和Debug Bug的起源&#xff1a; 当时人们还在使用第一代真空计算机&#xff08;马克二型&#xff09;&#xff0c;这种计算机是依靠控制电流来改变开关&#xff0c;从而实现控制&#xff0c;但是它会发出大量的热和光。 1949年9月9日&#xff0c;天气非常炎热&#xff0c…

10个用于C#.NET开发的基本调试工具

在调试软件时&#xff0c;工具非常重要。获取正确的工具&#xff0c;然后再调试时提起正确的信息。根据获取的正确的错误信息&#xff0c;可以找到问题的根源所在。找到问题根源所在&#xff0c;你就能够解决该错误了。 你将看到我认为最基本的解决在C# .NET 中错误问题的工具…

数据库(左、中、右)连接

一分钟让你搞明白 left join、right join和join的区别 首先&#xff0c;我们先来建两张表&#xff0c;第一张表命名为kemu&#xff0c;第二张表命名为score&#xff1a; 一、left join 顾名思义&#xff0c;就是“左连接”&#xff0c;表1左连接表2&#xff0c;以左为主&…