Android开发 ——Android Studio工具Debug调试技巧

  • 设置好断点,然后用debug模式编译安装这个app;

  • 执行attach debugger to Android process,即将debug进程添加到当前进程中。

一般比较常使用的debug方式是attach debugger to Android process:

这里写图片描述

在执行按钮右侧两个的带有小虫子的按钮其实就是Attach Debugger to Android process按钮。

我们可以在启动apk之后,直接下断点,然后attach process到指定进程,条件触发之后就可以直接进入调试模式。

断点调试

断点调试是最基本操作,基恩的断点调试有以下的几个常用的调试命令:

  • F5跳转内部执行

  • F6跳转下一步

  • F8跳转到下一个断点

如何添加断点?

直接在Android studio中的Java源代码左侧,想调试某一行代码的话,直接单击若左侧出现了一个小红圈,则说明断点已经添加好了:

这里写图片描述

当代码处于debug模式,并且执行到此处的时候就会卡住在这里。

执行断点调试

执行attach debugger to Android process,当代码执行到含有断点的时候就可以将程序卡到断点的代码了:

这里写图片描述

这时候我们可以看到在该行代码中可以看到相应的局部变量值,执行F6走到下一步,执行F8,调试到下一个断点。

添加观察变量

在调试模式下,选择变量,并右击:

这里写图片描述

这时候选择Add to watches,就可以将变量添加到观察列表了。

表达式调试:Evaluate Expression

这个调试功能非常的实用,也是我最喜欢的功能,使用ctrl + u快捷键可以弹窗表达式调试弹窗:

这里写图片描述

这个功能非常实用,可以在断点处直接进入一个求值环境,在这里你可以执行任何你感兴趣的表达式可以在表达式调试弹窗中写任何java表达式,比如:

这里写图片描述

其他的比如在断点处有一个对象object,如果你要查看它的某个属性很简单,在Debug窗口就能看到,但是如果你想要执行它的某个方法看看结果是什么呢?借助这个可以实现。当然它的功能远不止这么多,相当于直接进入了一个 REPL环境,非常实用。

条件断点

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

这里写图片描述

其他断点调试方式

除了这里的求值断点,条件断点,还有日志断点,异常断点,方法断点等,具体的可自行google哈。

总结:

  • Android默认提供了Log API实现对日志的打印功能;

  • 可以实现自定义日志框架,定制化显示日志样式,定制化配置是否显示日志等,可参考:Android日志框架

  • 可以通过配置gradle,让测试环境中显示日志信息,在正式环境中不显示日志信息;

  • Android studio提供了断点调试功能,包含了求值调试,条件断点,日志断点,方法断点,异常断点等等;

另一片文章:

0.前言

Android Studio目前已经成为开发Android的主要工具,作为开发者,调试、发现并解决BUG是家常便饭。正所谓,工欲善其事必先利其器,今天我们就来看看Android Studio中的调试技巧。

1.调试面板

首先,来看看Android studio中为我们提供的调试面板(标准情况下):这里写图片描述

点击右上角Restore ‘Threads’View可先展示目前相关的线程信息:

这里写图片描述

2.单步调试区

2.1 Show Execution Point这里写图片描述

点击该按钮,光标将定位到当前正在调试的位置。

2.2 Force Step Into这里写图片描述

强制单步跳入,和step into功能类似。

主要区别在于:如果当前行有任何方法,不管该方法是我们自行定义还是类库提供的,都能跳入到方法内部继续执行。

2.3 Drop Frame这里写图片描述

中断执行,并返回到方法被调用处,在这个过程中该方法对应的栈帧会从栈中移除。并且所有上下文变量的值也恢复到该方法未执行时的状态。

2.4 Force Run to Cursor 这里写图片描述

非常好用的一个功能,可以忽视已经存在的断点,跳转到光标所在处。

3.求值表达式

Evaluate expression 这里写图片描述

点击该按钮会在当前调试的语句处嵌入一个交互式解释器,在该解释器中,你可以执行任何你想要执行的表达式进行求值操作。

比如,我们在调试时执行到以下代码:

这里写图片描述

此时执行EvaluateExpression,在该解释器中我们能做什么呢?在这里,我们可以对result进行求值操作:右键要求值,选择evaluate Expression。此时会显示如下:

这里写图片描述

在弹出的输入框中输入求值表达式,比如这里我们输入Math.min(result,50),如下图:

这里写图片描述

点击执行,我们发现在Result中已经输出了结果,如下:

这里写图片描述

3.断点管理区

3.1 Return 这里写图片描述

点击该按钮会停止目前的应用,并且重新启动。用于想重新调试时。

3.2 Pause Program 这里写图片描述

点击该按钮将暂停应用的执行,如果想要恢复则可以使用下面提到的Resume Program。

3.3 Resume Program这里写图片描述

该操作有恢复应用的含义,但是却有两种行为:

1. 在应用处在暂停状态下,点击该按钮将恢复应用运行;

2. 在很多情况下,我们会设置多个断点以便调试。在某些情况下,我们需要从当前断点移动到下一个断点,两个断点之间的代码自动被执行,这样我们就不需要一步一步调试到下一个断点了,省时又省力。

3.4 Stop这里写图片描述

(1)对普通的Java项目,点击该按钮意味着退出调试模式,但是应用还会执行完成;

(2)而在Android项目中,点击该按钮,则意味这APP结束运行。

3.5 View Breakpoints这里写图片描述

点击该按钮会进入断点管理界面,在这里你可以查看所有断点,管理或者配置断点的行为,如删除,修改属性信息等:

这里写图片描述

3.6 Mute Breakpoints 这里写图片描述

使用该按钮来切换断点的状态:启动或者禁用。

在调试过程中,你可以暂时禁用所有的断点,以实现应用正常的运行。该功能非常有用,比如当你在调试过程中,突然不想让断点干扰你所关心的流程时,可以临时禁用断点。

3.7 Get thread dump这里写图片描述

获取线程Dump,点击该按钮将进入线程Dump界面。

这里写图片描述

线程工具区中最常用的是这里写图片描述,可以用来过滤线程,其他的不做解释了。

接下来我们来认识一下线程的类型,表示为不同的图标:

| 线程状态描述 | 图标 |

| — | — |

| Thread is suspended. | 这里写图片描述 |

| Thread is waiting on a monitor lock. | 这里写图片描述 |

| Thread is running. | 这里写图片描述 |

| Thread is executing network operation, and is waiting for data to be passed. | 这里写图片描述 |

| Thread is idle. | 这里写图片描述 |

| Event Dispatch Thread that is busy. | 这里写图片描述 |

| Thread is executing disk operation. |

这里写图片描述

|

3.8 Settings这里写图片描述

点击该按钮将打开有关设置的列表:

这里写图片描述

3.8.1 Show Values lnline

调试过程中开启该功能,将会在代码右边显示变量值,即下图中红框所示部分:

这里写图片描述

3.8.2 Show MethodReturn Values

调试过程中启用该功能,将在变量区显示最后执行方法的返回值。

举个例子来说,首先,关闭该功能,我们调试这段代码并观察其变量区:

这里写图片描述

开启该功能之后,再来观察变量区的变化:

这里写图片描述

继续往下调试:

这里写图片描述

这个功能简直是棒极了!在调试一段代码,并想看该代码中最后调用方法的最终结果时就非常有用了。

3.8.3 Auto-VariablesMode

开启这个功能后,idea的Debugger会自动评估某些变量,大概就是当你执行在某个断点时,Debugger会检测当前调试点之前或者之后的变量的状态,然后在变量区选择性输出。

举个例子来说明,未开启该功能之前,变量区输出所有的变量信息:

这里写图片描述

开启之后,当你调试到第13行时,Debugger检测到num变量在之后没有被使用,那么在变量区就不会输出该变量的信息。

这里写图片描述

3.8.4 Sort valuesalphabetically
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则近万的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

续更新!**

如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:Android)

[外链图片转存中…(img-HkahKdXc-1713808752564)]

最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

很多人在刚接触这个行业的时候或者是在遇到瓶颈期的时候,总会遇到一些问题,比如学了一段时间感觉没有方向感,不知道该从那里入手去学习

如果你看到了这里,觉得文章写得不错就给个赞呗?如果你觉得那里值得改进的,请给我留言,一定会认真查询,修正不足,谢谢。

《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》点击传送门即可获取!

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio中,有几个常用的调试工具可以帮助你调试应用程序。以下是其中的一些: 1. Logcat:Logcat是Android Studio内置的日志输出工具,可以查看应用程序的日志信息。你可以在代码中使用Log类输出日志信息,并在Logcat中查看这些信息。 2. 断点调试:你可以在代码中设置断点,以在特定位置停止应用程序的执行,并检查变量的值和代码的执行顺序。在调试模式下,可以使用调试工具栏中的各种按钮来控制应用程序的执行。 3. 监视器:监视器可以查看应用程序的内存使用情况、线程状态和CPU使用率等信息。你可以使用监视器来确定应用程序的性能瓶颈,并优化代码。 4. GPU调试器:GPU调试器可以查看应用程序的GPU使用情况,包括GPU渲染时间、帧率和纹理使用情况等。你可以使用GPU调试器来优化应用程序的图形性能。 5. 内存分析器:内存分析器可以查看应用程序的内存使用情况,包括内存泄漏、对象引用和堆转储等信息。你可以使用内存分析器来优化应用程序的内存使用。 6. CPU Profiler:CPU Profiler可以查看应用程序的CPU使用情况,包括方法执行时间、线程状态和CPU使用率等信息。你可以使用CPU Profiler来确定应用程序的性能瓶颈,并优化代码。 以上是Android Studio中常用的调试工具,可以帮助你快速定位应用程序中的问题,并进行优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值