当开发过程中遇到一些奇怪的 bug,但又迟迟定位不出来原因是什么的时候,最好的办法就是进行调试。
设置断点
点击Debug模式运行并查看调试面板
一、简单调试
1. step over:单步调试
-
单步调试按钮:
当前程序运行的位置,我们看到i的值已经在程序代码中展示出来了,黄色的代码处,这个是AS的功能,对于我们调试来讲,这简直是非常大的福利了。
-
继续点击单步调试按钮或按快捷键F8,看看效果:
2. step into:看到方法往里走
比如我们的for循环当中调用了一个testIn(int test)方法,当我们走到这里想看看这个方法里面的运行过程的时候我们可以这样,当走到这个方法的时候我们可以按下F7,或者如下图的图标。
这时就走到了testIn方法当中:
我们再来看看Logcat, 说明我们的逻辑是OK的:
3. force step into :所有方法看完整
这个是可以看到你所调用的所有方法的实现会让你跟着它走一遍,研究源码使用非常方便:
比如在调用Log.i()方法时force step into,就会走到这里来:
4. step out :有断点下一个,走完断点继续走
这里如果我们的一个流程当中,包括调用的方法,如果有断点走到下一个断点,如果没有断点,而是在一个调用的方法当中,会跳出这个方法继续走(与step into相对应)。
5. run to Cursor :走向下个断点
这里的意思就是说,会很快执行到下一个断点的位置(如果程序中已经打了多个断点的话):
二、高级调试
1. 跨断点调试
如果我们设置了多个断点,现在我们需要直接跳转到下一个断点,那么直接点击下图就可以了:
2.观察变量
如果我们想观察1个或者几个变量的值的变化,甚至更多的时候,那么就难观察了,我们可以做如下操作:点击Watches,点击+号,然后输入变量的名称回车就OK了,而且会有历史记录哦!
如果变量名比较长我们可以这样,选择[Variables]中的变量名然后点击[右键],选择[Add to Watches],然后Watches面板中就有了:
3.设置变量的值
在程序中有很多的条件语句和循环语句,调试也是比较耗时的,我们可以通过快速设置变量的值来加快调试速度,我们可以做如下操作:
选择[Variables]中的变量名然后点击[右键],选择[Set Value..]或者选中之后直接F2,输入变量的值后直接回车即可
4.查看断点
点击之后我们可以看到所有的断点,以及位置代码,也可以设置一些属性:
5.停止调试
要注意的是这里的[停止调试]不是让程序停止,而是跳过所有调试
感谢优秀的你跋山涉水看到了这里,欢迎关注下让我们永远在一起!