手记

Android Studio Debug调试技巧集合

相信Debug调试对于我们来说并不陌生,但是熟练得使用它却并非那么容易。Debug断掉追踪调试是解决bug和代码分析的利器。某天跟一同事理代码,发现他居然不知道debug调试的很多技巧,连简单的Attach debugger to Android process以及断点加表达式也不知道,每次调试都要加断点,然后Run,这效率也太低了,于是就萌生了写一篇关于Debug调试的文章。废话不多说,开整。。。
基本的使用

使用Android Studio 怎能能每次调试都设置断点,然后Run呢?这是会被打的。。。请废弃掉这样的做法吧,咱们来使用另一种办法,即Attach debugger to Android process,当程序运行起来后,点击上图的运行按钮右边的第三个按钮,此时会弹出Choose Process,然后就可以选择你要调试的进程了,确定后就可以进入调试模式,设置断点了。

接下来就是常规的F7(跳入方法),F8(单步执行)。

如果设置了很多断点,想全部取消掉这些断点,难道你需要一个一个的取消么?不,不需要的,有更快捷的办法。那就是如下图:(点击左侧的停止按钮下方的按钮即可弹出对话框)将所有的断点勾选上,然后左上角的减号,即可全部取消。

断点条件调试

如果调试循环时,只想看某一特定循环次数下的运行情况,那么只需要在循环体里设置一个断点,当调试停止时,只需要右键点击断点,在弹出的窗口中输入Condiction条件,点击Done按钮,然后当程序执行到循环体时,会在满足条件的一次循环中停下来,供我们调试:(如下图)

日志断点

有没有这样的时候?不小心手贱点击Run了,然后想到哎呀忘记在某个地方添加Log了,那么使用日志断点你再也不用纠结了。你只需要在打Log之前的地方设置一个断点,当程序运行至此停止时,还是右键断点,如下图:
当程序运行到Log的地方,控制台就会输出log了。

变量赋值

比如,我们的代码里有一个变量,这个变量的值会影响到程序的执行结果。如果我们想观察这个变量在不同的赋值下程序的执行结果怎么办呢?难道要一遍遍的在代码里修改变量值,然后重新运行程序吗?显然这是非常麻烦的操作。其实,如果利用Debug模式下的变量赋值(Set Value),只需要运行一次,就能达到我们的观察效果。在使用该变量的代码处打个断点,然后在Variables窗口找到对应的变量,修改变量值并执行即可。

变量观察

在Variables变量区和Watches观察区可以查看Debug模式下,程序执行到断点处的变量值或者对象的各属性值,但是多多少少查看起来还是有些不方便。其实可以通过弹出窗口的形式查看属性值,只要将光标定位至断点代码行所用到的变量,IDE会自动弹出一个小窗口,如下图所示,此时,使用对应的快捷键或者点击这个小窗口里的变量即可弹出变量属性值窗口,Mac下的快捷键位command + F1,如图所示:
还有另外一种方式那就是将要观察的变量右键选择add Watches就可在Watches观察了。

对象求值

在断点处,如果有变量对象,系统提供了表达式求值功能,针对Variables视图中的变量对象,我们可以输入任何计算语句,实时查看表达式计算结果。具体操作为,右键Variables视图中的变量对象,选择Evaluate Expression,弹出表达式窗口,输入任何你想要的计算语句,点击Evaluate计算按钮,即可显示Result结果:
或者在Watches区域,点击左下角的+号,然后就可以像写代码一样求任意赋值之后对象的值了。

方法断点

通常我们会对方法里的代码添加断点调试,很少对方法本身调试。其实,如果只是为了看到方法的参数和返回结果,我们可以在定义方法的第一行打断点,直接对方法本身调试,此时断点的展示图标样式也会与众不同:

变量断点

有时候,我们想知道自定义的变量的何时何地发生了改变,就可以使用变量断点。变量断点的图标样式也与众不同,在变量定义行打断点,开启Debug模式,在程序执行的过程中,如果该变量的值发生改变,程序会自动停下来,并定位在改变变量值的地方,供开发者调试:

异常断点

程序在执行的过程中可能会出现各种各样的未知性异常,如果能在发生异常的时候第一时间让程序停下来,并定位到异常出现的地方,供开发者调试,那当然是极好的。而万能的Android Studio就提供了这样的功能。

打开断点管理器,这里有两种方式打开:点击工具栏菜单Run,选择View Breakpoints;在Debug窗口直接点击View Breakpoints图标。点击左上角加号按钮,可以添加各种断点,包括前文提到的Method Breakpoints和Field Watchpoints断点,这里我们选择Exception Breakpoints异常断点,在弹出的Enter Exception Class窗口中输入需要监控的异常类别即可:

至此,基本上能cover多数情况下的调试技巧了。

9人推荐
随时随地看视频
慕课网APP

热门评论

我的android studio 不显示变量名怎么回事就显示这些http://img.mukewang.com/596c6beb00011c2e10890303.jpg

你这个写的还好,可是我目前要混合编程的调试,而且我这个项目是基于这个ionic框架来调试的


查看全部评论