在上一篇里面我们讲到了遇见BUG时主要的也是最基本的解决方式,就是通过编译器自带的DEBUG跟踪程序的运行,使得我们可以更加快速方便的找到问题,并根据问题设计解决办法。在这一篇里我们就深入具体的讲解一下DEBUG的特性和使用方式。
在调试开始之前还是要先介绍一下环境和工具,首先编译器用的是Google推出的Android studio编译器,这个编译器不用像eclipse一样安装什么插件,自带了非常全面的Android工具,用起来还是很方便的。手机是使用的Testbird手游测试平台的云手机,远程真机操作,既方便又环保。推荐给不想用自己手机调试或者手机达不到调试要求的朋友们。 调试的程序还是沿用上一篇的按键次数统计程序,步骤依旧是先打断点,再运行DEBUG,最后按需求调试程序。断点就是程序在DEBUG条件下运行时会自动停止的代码点,打断点是调试程序的基本操作也是核心操作之一。 打断点:点击DEBUG运行程序:手机界面刚开始的时候:在点击程序中计数按键后出现DEBUG调试面板:这个面板里面不仅包括了很多有用的调试信息,还有一些很方便快捷的功能可供程序员快速查找自己想要的内容。例如在右方有一栏watch可以自由添加或者减少你想查看的变量的值: 又比如在中间有一栏various,可以看见里面有各种编译器认为你可能用得上的源码或者自定义代码的信息,如下图包括自定义的count的值: 当然最重要的下面要讲的一系列调试按键,不同的按键对应不同的调试方式: Step over:一步一步走一行有效代码的执行就是一步: 这个时候按一下Step Over(快捷键F8)可以看见程序从断点所在行运行到了下一行,如下图: Step Into:看到方法往里走为了体现它的作用,我们在断点下面加上一个函数的调用来示范一下(这个函数的调用不要加在Btn1_Click函数中,因为那会引起程序的系统参数改变,这里我们加在onCreate中): 重新开启DEBUG我们通过单步走将程序停在函数调用处: 这个时候点击Step Into,可以看见程序进入到了函数中(如果是F8就不会进入而是直接执行MyTest();的下一步): Step Out:有断点下一个,走完断点继续走这个操作的意思是如果当前程序所在函数后面没有断点了就跳出这个函数执行到调用函数处的下一个断点: Run to Cursor :一直运行到下个断点这一步的含义就是程序会一直运行,直到下一个断点的位置才会再次停下,接着上面的步骤点击run to cursor后可以看见程序没有到达任何断点,这是因为下一个断点在Btn1_Click里面,这个函数只会在你点击按键的时候触发,点击之后可以看见程序停在了里面,继续按下run to cursor 可以看见云手机里的变化: 上述内容为大家展示了DEBUG最主要也是最常用的功能和特性,这些功能和特性在DEBUG面板中都可以找得到。但光知道这个是不够的,想要正确快速地解决问题,除了要多练习熟能生巧以外,还需要有一些小技巧来辅助大家快速并精确的远程调试你的程序。详情请见下一篇文章。
|