共计 2911 个字符,预计需要花费 8 分钟才能阅读完成。
Debug 断点跟踪调试是软件开发过程中剖析代码、解决 BUG 的一个重要伎俩,不同 IDE 下的 Debug 工具的应用有所不同,但提供的调试性能肯定是包罗万象。很多程序员的 Debug 能力都停留在根本的单步执行、断点跳跃上,殊不知还有很多鲜为人知但十分不便的调试技巧。本文就以 Android Studio 工具为例,展现一些个别人不晓得的 Debug 调试技巧,把握这些,你也算是 Debug 调试巨匠了。
根本应用
Debug App 有两种路径,第一种是间接点击下图运行按钮右侧的小虫状图标,运行并调试以后 Project,这个我想大家都晓得。
Debug App.png
第二种就是调试以后曾经处于运行状态下的 App,这也是咱们用的更多的一种调试伎俩,即 Attach debugger to Android process
。点击运行按钮右侧第三个按钮,弹出Choose Process
窗口,抉择对应的过程,点击 OK 按钮即可进入调试模式,此时,咱们便能够在须要的中央间接下断点调试代码了:
Attach debugger to Android process.png
接下来就是常见的调试办法了,在 Debug 窗口顶部工具栏有一排操作按钮,比方Step Over
(单步执行)、Step Into
(进入办法)等,如图所示:
Debug 窗口.png
打断点和勾销断点最间接的形式就是单击指标代码行的行号右侧空白处,而后在 Debug 窗口左侧有个断点浏览按钮View Breakpoints
,位于进行按钮下方第一个,能够浏览 Project 中的所有断点,同时能够增加删除断点:
View Breakpoints.png
条件断点
有时候,咱们的断点打在了循环体外面,然而咱们只想看某一特定循环次数下的运行状况,难道要应用 Run to Cursor
性能不停地跳至下一次断点直至满足咱们的要求吗?
循环里的断点.png
如果你晓得条件断点的话,肯定会悔不当初。条件断点能够满足开发人员本人输出条件,比方 fori
循环中输出 i == 5
即可让程序间接运行至第六次循环,for each
循环中针对 list 某一元素下的断点调试。只须要右键点击断点,在弹出的窗口中输出 Condiction 条件,点击 Done
按钮,而后当程序执行到循环体时,会在满足条件的一次循环中停下来,供咱们调试:
条件断点.png
日志断点
打印日志也是跟踪程序剖析问题的一个十分无效的伎俩,然而如果咱们的程序曾经运行并且处于调试模式,此时如果想打印日志更加直观的剖析代码,难道还要进行调试、增加 Log 代码并从新编译运行吗?
如果你晓得日志断点,就不必如此大费周折,费时费力了。还是右键点击断点,在弹出的窗口中勾销勾选 Suspeng
复选框(即示意程序运行至此断点时不会停下来供开发者调试),而后勾选Log evaluated expression:
,并输出打印语句即可。这样,当 Debug 模式下的程序执行至此,不会停下来,而是在控制台中打印对应信息,如:
日志断点.png
变量赋值
比方,咱们的代码里有一个变量,这个变量的值会影响到程序的执行后果。如果咱们想察看这个变量在不同的赋值下程序的执行后果怎么办呢?难道要一遍遍的在代码里批改变量值,而后从新运行程序吗?显然这是十分麻烦的操作。其实,如果利用 Debug 模式下的变量赋值(Set Value),只须要运行一次,就能达到咱们的察看成果。在应用该变量的代码处打个断点,而后在 Variables
窗口找到对应的变量,批改变量值并执行即可。
Set Value.png
变量察看
在 Variables
变量区和 Watches
察看区能够查看 Debug 模式下,程序执行到断点处的变量值或者对象的各属性值,然而多多少少查看起来还是有些不不便。其实能够通过弹出窗口的模式查看属性值,只有将光标定位至断点代码行所用到的变量,IDE 会自动弹出一个小窗口,如下图所示,此时,应用对应的快捷键或者点击这个小窗口里的变量即可弹出变量属性值窗口,Mac 下的快捷键位command + F1
,如图所示:
变量察看 01.png
变量察看 02.png
对象求值
在断点处,如果有变量对象,零碎提供了表达式求值性能,针对 Variables
视图中的变量对象,咱们能够输出任何计算语句,实时查看表达式计算结果。具体操作为,右键 Variables
视图中的变量对象,抉择 Evaluate Expression
,弹出表达式窗口,输出任何你想要的计算语句,点击Evaluate
计算按钮,即可显示 Result 后果:
Evaluate Expression01.png
Evaluate Expression02.png
办法断点
通常咱们会对办法里的代码增加断点调试,很少对办法自身调试。其实,如果只是为了看到办法的参数和返回后果,咱们能够在定义方法的第一行打断点,间接对办法自身调试,此时断点的展现图标款式也会不同凡响:
办法断点.png
变量断点
有时候,咱们想晓得自定义的变量的何时何地产生了扭转,就能够应用变量断点。变量断点的图标款式也不同凡响,在变量定义行打断点,开启 Debug 模式,在程序执行的过程中,如果该变量的值产生扭转,程序会主动停下来,并定位在扭转变量值的中央,供开发者调试:
变量断点.png
异样断点
程序在执行的过程中可能会呈现各种各样的未知性异样,如果能在产生异样的时候第一工夫让程序停下来,并定位到异样呈现的中央,供开发者调试,那当然是极好的。而万能的 Android Studio 就提供了这样的性能。
关上断点管理器,这里有两种形式关上:点击工具栏菜单 Run
,抉择View Breakpoints
;在 Debug 窗口间接点击View Breakpoints
图标。点击左上角加号按钮,能够增加各种断点,包含前文提到的 Method Breakpoints
和Field Watchpoints
断点,这里咱们抉择 Exception Breakpoints
异样断点,在弹出的 Enter Exception Class
窗口中输出须要监控的异样类别即可:
Breakpoints.png
Exception Breakpoints.png
欢送补充
以上便是应用 Android Studio 工具的开发过程中很是实用但却少见的 Debug 调试技巧,当然所有这些操作都能够通过快捷键关上,将鼠标光标移到对应图标处,都会显示对应快捷键组合,大家自行酌情应用。
当然,如果你还有更好的调试技巧,欢送留言补充,让咱们一起在分享中学习,交换中提高。
相干教程
Android 根底系列教程:
Android 根底课程 U - 小结_哔哩哔哩_bilibili
Android 根底课程 UI- 布局_哔哩哔哩_bilibili
Android 根底课程 UI- 控件_哔哩哔哩_bilibili
Android 根底课程 UI- 动画_哔哩哔哩_bilibili
Android 根底课程 -activity 的应用_哔哩哔哩_bilibili
Android 根底课程 -Fragment 应用办法_哔哩哔哩_bilibili
Android 根底课程 - 热修复 / 热更新技术原理_哔哩哔哩_bilibili
本文转自 https://juejin.cn/post/6844903457619443719,如有侵权,请分割删除。