close
当前位置: 物联网在线 > 技术文库 > android >

Android Studio你不知道的调试技巧

写代码不可避免有Bug,通常情况下除了日志最直接的调试手段就是debug;那么你的调试技术停留在哪一阶段呢?仅仅是下个断点单步执行吗?或者你知道 Evaluate Expression,知道条件断点;可是你听说过日志断点吗,Method Breakpoint, Exception Breakpoint 呢?还有高大上的 Field Watchpoint ?

Android Studio你不知道的调试技巧

你有关注过Android Studio旁边断点的区别吗?比如上图三个断点有什么不同?本文会告诉你关于Android Studio debug的一切。

调试基础

一般来说我们有两种办法调试一个debuggable的apk;其一是下好断点,然后用debug模式编译安装这个app;其二是 attach process,在Android Studio里面就是这么一个对话框:

Android Studio你不知道的调试技巧

第二种方法比较常用,我们可以在启动apk之后,直接下断点,然后attach process到制定进程,条件触发之后就可以直接进入调试模式。

其他的一些单步执行,step into, step out, force step into 等就不提了;基本的跟踪手段。

还是提一下,下断点最简单的办法,是在代码编辑器的左侧,行号右边鼠标点击一下即可。

Evaluate Expression

这个功能非常实用,可以在断点处直接进入一个求值环境,在这里你可以执行任何你感兴趣的表达式;如下图:

Android Studio你不知道的调试技巧

比如在断点处有一个对象object,如果你要查看它的某个属性很简单,在Debug窗口就能看到,但是如果你想要执行它的某个方法看看结果是什么呢?借助这个可以实现。当然它的功能远不止这么多,相当于直接进入了一个 REPL环境,非常实用。忘了说了,快捷键 Alt + F8 :P

条件断点

假设你的断点在一个列表的循环里面,可是你只对这个列表的某一个元素感兴趣,只想在遇到这个元素的时候才断下来;你是一直人肉 F9 直到满足条件吗?条件断点就是满足这种需求的,顾名思义,在特定条件下的断点。使用起来也非常简单,在你的断点上鼠标右键会出现一个小窗口,写上条件即可。

Android Studio你不知道的调试技巧

日志断点

很多时候我们调试的时候更多的是打印日志定位异常代码,缩小范围之后再使用断点解决问题;所以经常做的事情就是在代码里面添加日志信息,输出函数参数,返回信息,输出我们感兴趣的变量信息等。

但是这么做一个问题就是,我们添加了日志代码需要重新编译;在没有 Instant Run 之前的黑暗时代这么做是非常痛苦的,每次编译少则几十秒,多则几分钟;这样无意义的等待简直就是折磨;其实,除了热部署工具,我们还可以使用日志断点解决这个问题。

首先我们在想要输出信息的地方下一个断点;然后右键这个断点,在出现的设置框里面把这个断点的 suspend 属性设置为 False ,这样虽然叫做“断点”,但是并不会真正断下来;然后,我们在 log message 里面填上我们想要输出的日志信息。如下图(注意标红位置):

Android Studio你不知道的调试技巧

这样,每次代码执行到这个断点的位置,这个可爱的断点并不会使我们的程序停下来,而是输出我们告诉它的日志信息,然后继续执行;非常方便。

方法断点

传统的调试方式是以行为单位的,所谓单步调试;但是很多时候我们关心的是某个函数的参数,返回值;(回想一下我们使用日志的时候打印的最多的信息难道不是函数的参数和返回值吗?)使用方法断点,我们可以在函数级别进行调试;如果经常跳进跳出函数或者只对某个函数的参数感兴趣,这种类型的断点非常实用。具体使用方法有两种方式;最简单的是在你感兴趣的方法头那一行打上断点,这时候你会发现断点图标有点不一样,这就是方法断点了,如下图:

Android Studio你不知道的调试技巧

另外一种方式是通过断点设置窗口, 后面介绍。

异常断点

在有些情况下,我们只对某些特定的异常感兴趣,或者我们只对异常感兴趣;我们希望只要程序发生异常程序就能断下来;这好像保存现场一样,只要发生命案了(异常),第一时间保存现场,这样什么指纹之类的线索就会清晰很多,坏蛋就算想逃也是插翅难飞啊。


(责任编辑:ioter)

用户喜欢...

摆脱APP收入被Android逆袭的命运?苹果宣布App Store支持微信支付

APP营收即将被Android超越的苹果,和移动支付市场份额即将追上支付宝的腾讯,终于走到了一起...IT经理网...


人肉推荐才是王道:Google Play独立手游节发布Android游戏TOP20大名单

Google Play独立游戏节是大数据时代通过人工推荐来提高优秀APP曝光率和可视性的另外一个尝试。IT经理网...


Seeed Studio Wio Tracker让你轻松创建基于GPS的IoT项目

Seeed Studio的Wio Tracker这款无线输入输出 (Wio) Tracker为开源网关,通过跟踪几乎所有移动的目标并以无线方式上传数据,...


Seeed Studio Wio Tracker登陆贸泽 让你轻松创建基于GPS的IoT项目

 最新半导体和电子元器件的全球授权分销商贸泽电子 (Mouser Electronics) ,宣布即日起开始备货Seeed Studio的Wio Tracker。这款无线输入输出 (Wio) Tracker为开源网关,通过跟踪几乎所有移动的目标并...


Android O之后 一加3/3T再无重大系统升级

谷歌很快就将推出Android O了,相关细节也将在近期逐一浮出水面。而一加3以及一加3T也将会在今年年底之前迎来这一...


北美汽车电子与安全配置需求调查:用户最想要的是USB而不是CarPlay

2017年各大汽车厂商极力推行,并且装配大量新车型的CarPlay和Android Auto汽车数字娱乐系统,压根没有触及用户需求的“...


Android Things 入手,具体如何构建一个完整的智能家居系统

2012 年 6 月,由 IoT-GSI(Global Standards Initiative on Internet of Things)发布的白皮书ITU-T Y.4000/Y.2060[1]中明确定义了物联网的概念。从技术标准化的角度来讲,物联网可以看作是信息社会中,基于现有...


你可能不知道的智能手机13种传感器 ,依靠哪些原理来运作?!

摇动手机就可以控制赛车方向;拿着手机在操场散步,就能记录你走了几公里?这些你越来越熟悉的场景,都少不了天天伴你身旁的智能手机。而手机能完成以上任务,主要都是靠内部安装的...


你不知道的Chrome开发者工具新功能

相信对本文感兴趣的读者对于Chrome开发者工具的基本功能应该都比较熟悉:DOM查看器、样式面板、JavaScript控制台。但是Chrome开发者工具还有很多不太出名但绝对能够对调试、应用创建带来很...


基于Unity3d 引擎的Android游戏优化

最近项目进入收尾阶段,之前对项目做了很多优化,mesh合并 ,减少DrawCall和模型骨骼以及物理计算,合并材质球,优化代码等等,在IOS上还好,但是上,试过几款手机,从低端到高端,发现...