2024年Android开发 ——Android Studio工具Debug调试技巧,配电设计面试问题

总结:

各行各样都会淘汰一些能力差的,不仅仅是IT这个行业,所以,不要被程序猿是吃青春饭等等这类话题所吓倒,也不要觉得,找到一份工作,就享受安逸的生活,你在安逸的同时,别人正在奋力的向前跑,这样与别人的差距也就会越来越遥远,加油,希望,我们每一个人,成为更好的自己。

  • BAT大厂面试题、独家面试工具包,

  • 资料包括 数据结构、Kotlin、计算机网络、Framework源码、数据结构与算法、小程序、NDK、Flutter

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

另一片文章:

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

开启这个功能后,变量区中的输出内容会按照按字母顺序进行排序,不常用,还是按照默认的顺序好。

3.9 Help这里写图片描述

这个不用说了,有任何不明白的都可以查看官方帮助文档。

其他几个操作:Settings、Pin、Close留给各位自己去使用。

4.修改变量值

在调试过程中,我们可以方便的修改某个变量的值,如下:

这里写图片描述

在上图中,当前result的值经过计算为10,这里我们通过Set Value将其计算结果修改为100。

5.变量观察区

该区域将显示你所感兴趣的变量的值。

在调试模式下,你可以通过Add to Watches将某个变量添加到观察区,操作如下:

这里写图片描述

这里我们对name比较感兴趣,希望看到它的值的变化情况,因此我们将其“特殊关照”。

需要注意,此时因为name是成员变量,因此在对象观察区也可看到该值。如果是局部变量,无疑只能用这种方式了。

6.断点

6.1 条件断点

所谓条件断点就是在特定条件发生的断点,也就是,我们可将某个断点设置为只对某种事件感兴趣,最典型的应用就是在列表循环中,我们希望在某特定的元素出现时暂停程序运行。比如,现在我们有个list中,其中包含了q,1q,2q,3q四个元素,我们希望在遍历到2q时暂停程序运行,那么需要进行如下操作:

在需要的地方添加断点,如下:

这里写图片描述

断点处左键单击,在Condition处填写过滤条件.此处我们只关心2q,因此填写s.equals(“2q”)

这里写图片描述

6.2 日志断点

该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。

最后

我见过很多技术leader在面试的时候,遇到处于迷茫期的大龄程序员,比面试官年龄都大。这些人有一些共同特征:可能工作了5、6年,还是每天重复给业务部门写代码,工作内容的重复性比较高,没有什么技术含量的工作。问到这些人的职业规划时,他们也没有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

有太多想法。

其实30岁到40岁是一个人职业发展的黄金阶段,一定要在业务范围内的扩张,技术广度和深度提升上有自己的计划,才有助于在职业发展上有持续的发展路径,而不至于停滞不前。

不断奔跑,你就知道学习的意义所在!

[外链图片转存中…(img-ocRjxt5X-1715593269240)]

[外链图片转存中…(img-tgDCRJV7-1715593269241)]

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化学习资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

  • 12
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值