android studio高级技巧,Android Studio之《高级篇:调试技巧》

cd40e4e2151d67718c2687c4c646c5e9.gif

前言

调试技巧是每一个开发者必须掌握的一套基本功,除了会使用外,还需要融汇贯通,在各种场合下灵活运用。

1

调试原理

为什么可以用开发工具来调试Java?因为,有一套牛B哄哄的JPDA工具。这个JPDA的全称是“Java Platform Debugger Architecture”,也即Java平台调试体系结构。JPDA提供一套灵活的API,方便开发工具调试Java程序。JPDA主要由三部分组成:JVMTI(Java虚拟机工具接口),JDWP(Java调试线协议),JDI(Java调试接口)。

其中JDI是最上层的接口,可供调试器调试使用。通过这些接口,调试器可以及时了解目标虚拟机的状态:比如查看目标虚拟机上有哪些类和对象等等。除此之外,调试器还可以控制目标虚拟机的执行:比如挂起和回复目标虚拟机的线程、设置断点等等。

关于调试内容,先讲到这,有兴趣的童鞋可以自行深入学习一下!

2

连接调试器

在Android Studio的工具栏里,有一个“attach debugger to Android process”的小工具,点击打开如下

91939823453e2cfcf08af9166621e924.png

在弹出框里面,会显示当前运行的进程,双击该进程之后,便可以将调试器连接到该进程上。便可以开启调试之旅。

3

插入断点

1

普通断点

断点,顾名思义就是程序执行到某一个地方中断。但这里的中断并非终止运行,而是暂停的意思。在Android Studio里面,可以单击某一行左侧来插入断点:

2ced1c0af350eea532391c9a319056bc.png

2

条件断点

所谓条件断点则是普通断点的升级版,在调试过程中非常好用。比如,在一个for循环里,如果需要在某一个特定的循环中暂停,查看变量信息,那么就需要用到这个条件断点,具体操作如下:

7a6c2d862fc4e447075b6ab5d7387c10.png

1)插入普通断点

2)右键该断点,弹出条件输入框

3)输入条件语句,然后点击“Done”,就可以开始调试了。

4

按步调试

我们程序一旦运行到指定的断点后,我们可以有如下的调试手段:

e72404266db802a9357bb7b4eeda7d0b.png

1

Step Over

2ea3de6c9172b7ba137fe762803ce9ec.png

Step Over(快捷键F8),一步一步往下走。当程序运行到断点后,暂停时,可以通过该按钮,一行一行往下执行代码,不需要再增加额外的断点。

2

Step Into

6afbc949c2527fe3b27f52eeb65ef4c8.png

Step Into(快捷键F7),则是遇到有方法或构建函数则往里执行。在碰到执行的代码里面有调用某一个方法时,Step Over 是直接当成一步跳过去,而Step Into 则是可以进入到该方法里去,在用Step Over一步一步调试。

3

Force Step Into

4df331e6eed75639a3f336b786d255d3.png

Step Into的扩展延伸,可以看到更多的调用关系。我们来对比一下差别,如下代码断点:

f76ae04a4acdbc31dc8f0587f9035844.png

在上述断点处暂停后,分别作如下动作

1)如果使用Step Into,则跳转到接下来的for循环这行;

2)如果使用Force Step Into(快捷键Alt+Shift+F7),则发现进入了ArrayList类中。

4

Step Out

ae687b859bb899d547c6fee60602a81c.png

配合上述的Step Into, 当使用Step Into进入到一个方法之后,想跳出来,在原来入口的代码位置继续往下走,则可以使用Step Out(快捷键Shift+F8)。

5

Run to Cursor

c5e8405e8cc72861c4aa2dfd477daef3.png

进入下一个断点(快捷键Alt+F9)。如果不想一步一步调试到下一个断点,则可以使用这个按钮来跳到下一个断点。

6

调试操作

1

恢复程序

03290c79ee4cd93ac44394c00c7a45ea.png

“Resume Program”也即恢复程序(快捷键F9),和“Run to Cursor”,一样,当在一个断点处暂停时,点击这个按钮,会执行到下一个断点。

2

停止调试

d5a18f2d7ebb069dc4cfc52765b9c5bf.png

停止调试(快捷键Ctrl+F2),可以中断调试。

3

请输入标题

bdd63742c967e14630dc801970a56d64.png

“View Breakpoints”,查看断点(快捷键Ctrl+shift+F8),可以查看到所有的断点。打开如下所示:

26d591673351bf36a0d6618e98101e05.png

从上图可以看到,默认选中了“Java工程中的断点”,同时还有一个可选项(默认不选中,需要自己手动勾选),这个可选项就有点牛掰了,它会在出现Java异常的地方,自动打上断点,一旦出现异常,则方便查看异常信息。(不得不为这个功能点赞~~~)

7

变量操作

1

观察变量

所谓观察变量,就是指在调试过程中,有些变量随着程序一步一步的运行,一直在改变。我们为了方便查看,将这些变量添加到指定的列表中,可以方便查看变量值的改变。

具体操作:我们加上断点,连接调试,然后程序运行到指定的断点处,便可以将关注的变量从Variables的面板添加到Watches面板中,具体如下

1)添加断点,连接调试器,运行到如下断点

d06b9463902b30590f136de1aaf03ce0.png

2)在Variables面板中,可以右键某一个变量,在弹出的菜单中选择“Add To Watches”,这个变量便会显示在Watches面板中了。(可以同时观察多个变量)

c21c9dc3bb03c35b26b05f4331a3fb66.png

2

设置变量值

这个是一个很强的功能,在调试过程中,我可以修改运行时的变量,从而可以尝试多种值。(好处就是不用重新编译工程,业界良心啊~~~)

要达到修改变量值,那么连接调试器,并设置断点是必须的。这里就讲一下,当达到某一个断点时,可以采用如下方式修改变量值:

1)右键某一个变量,比如i,在弹出菜单选择Set Value

96d69099cb0c65e50b573d8970c539aa.png

2)在框中键入新的值,同时按下回车(这个很重要,才会生效),比如我修改为100并按下回车,发现右侧的Watches面板的值已经发生改变

1ee790e8dffbfe0ff4475883545889ae.png

3)此时,i已经为100,可以继续调试,发现退出循环(循环的大小才5)

好的,调试技巧就讲到这,大家可以自己拿一个Demo试试,这样上手更快。

9d3ac9c842f92a50cab64a5ec3825358.gif

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值