前言
Android开发过程中,调试是一个十分重要的技能,有效的调试,可以尽快查找,定位问题,帮助快速解决问题,加快开发速度。调试的方式由很多种,其中用得比较广泛的有Debug调试
和log调试
。其中Debug调试
是Androidstudio
工具自带的一种调试方式,使用十分快捷,排查问题仔细,能有效的帮助找到问题。说来惭愧,开发这么多年,我一直是用Log
打印调试,为啥不用Debug调试
?因为不会用,然后逐渐远离它,最后的结果是:更不会。所以今天就来讲讲Debug调试
的基本使用吧。
正文
第一步:准备一段用于调试的代码
先让我们准备一段简单的代码吧,后续的讲解均依赖此段代码:
private void test() {
int number=5;
for (int i = 0; i < 10; i++) {
i=getNumber(i,number);
LogUtil.i("=======i====="+i);
}
}
private int getNumber(int i,int number){
if(i<number){
return i+1;
}else{
return i+7;
}
}
这里,我们需要调试test()
中的for循环
,然后查看i
值变化。
第二步:打断点
要调试for
循环,所以在代码左侧打下断点,如下图:
第三步:点击debug按钮,开始调试
点击工具栏上的爬虫
,开始调试。如下:
第四步:介绍几个调试按钮
启动调试以后,界面底部会展示调试的工具栏
,如下:
可以看到,上面有好几个按钮,这是为了方便我们调试的,下面对几个按钮作用一 一介绍。
4.1 单步执行
image.pngStep Over(F8): 单步执行。代码会一步步执行,若执行过程成遇到方法体,不会进入该方法,而是继续走当前代码的下一步。
以上面代码为例。即在不断点击
Step Over
的时候,会不断执行for循环
的代码,但不会进入到for循环
方法体中的getNumber(i,number)
方法中。
4.2 进入方法中
image.pngStep Into(F7): 进入方法中。以上面的
for循环
为例,当你点击Step Over
单步执行到代码行i=getNumber(i,number);
的时候,这时如果你想看看getNumber(i,number)
是如何执行的,你可以点击Step Into
按钮,跳到该方法内部查看getNumber(i,number)
的执行过程。
4.3 展示所有与之关联的方法
image.pngForce Step Into(Alt+Shift+F7): 该按钮能展示你要调试的代码行与之有关的所有方法。以代码行
i=getNumber(i,number);
为例,当调试到该行时,你点击了Force Step Into
按钮,frames
窗口会罗列出所有与该代码有关联的方法,如下图:image.png
这里,我们主要关注
getNumber(...)
,test()
以及onClick(...)
方法,因为这几个方法都是设置到代码逻辑层的方法,而展示的剩下的方法,都是系统层的,无需关注。值得注意的是,点击每个方法,都可查看具体运行值。以我点击getNumber(...)
为例,显示各变量值如下图:image.png
此方法有助于帮助理解各方法间调用逻辑关系。
4.4 跳出方法
image.pngStep Out(Shift+F8): 跳出方法。与
Step Into
方法相对应,当你调试代码行i=getNumber(i,number);
并已经进入到方法getNumber(i,number)
中时,这时,你想结束查看getNumber(i,number)
方法内部运行情况,并想继续回到外层for循环
中进行调试的时候,你可以使用此按钮跳出getNumber(i,number)
方法。
4.5 快速运行到下一断点
image.pngRun to Cursor(Alt+F9):快速运行到下一断点。当有多个断点调试的时候,可以迅速执行完当前断点,并记住任何已经调用过的方法,然后跳到下一断点处。
第五步:结束调试
当你想结束当前调试的时候,可以点击Androidstudio
的工具栏上的结束调试按钮,该图标显示如下:
当然,在结束调试之后,别忘了将将之前调试时打下的断点清理掉。
ok,今天的内容就介绍到这里了,谢谢大家。
网友评论