作为一名 Android 开发者,使用 Android Studio 作为 IDE 进行开发已经成为标配,本文就把 AS 的一些使用技巧来做一下归纳和总结。随着 AS 的版本升级,本文会同步更新。
调试技巧
在我们写代码或者是 Debug 过程中,各种调试手段必不可少,Android Studio 提供了强大的调试能力。
启动调试
启动调试方法我相信大家都会,一个是以Debug模式启动App,APP启动后,运行至第一处断点处会停下来,断点可以在运行之前设置,也可在运行后设置。一个是使一个已经启动的进程进入调试模式。这两种方式可以通过下面工具栏的的两个按钮启动。
基本调试方法
先来看一下 AS 的调试面板:
- 调试功能键:控制断点的执行;
- 断点管理键:控制断点调试的运行;
- 求值表达式:计算表达式的值;
- 变量观察区:显示当前可以观察到的对象及其属性值;
- 指定变量观察区:观察指定变量或者表达式的变化;
- 当前线程堆栈区:(点击Restore ‘Threads’ View 按钮)查看当前断点所在的线程以及调用堆栈;
调试功能键
- Show Execution Point:点击该按钮,光标将定位到当前正在调试的位置。
- Run to Cursor:程序执行到当前光标所在的位置。
- Force Run to Cursor:程序执行到当前光标所在的位置,可以忽视已经存在的断点。注意和 Run to Cursor 的区别。如果我们在代码中添加了很多的断点,现在不想每个断点都调试,只想让程序一次到位运行到指定的位置,这个是非常有用的功能。
- Get thread dump:获取线程Dump,点击该按钮将进入线程Dump界面。
断点管理键
- Restore Layout:重置调试窗口布局。
- View Breakpoints:可以查看所有断点,管理或者配置断点的行为。
- Mute Breakpoints:中途切换所有断点的状态。可以临时取消所有断点,不可用的时候断点是白色的。
- Drop Frame:这个还不知道怎么用。
- Show Values InLine:这个在 Settings 按钮列表中,可以在调试过程中代码右边显示变量值。
- Show Method Return Values:这个在 Settings 按钮列表中,可以把调试过程中在对象变量区将带返回值方法的返回值显示出来。
求值表达式
求值表达式的窗口如图所示:
调用这个窗口有两种方式:
- 通过调试面板的求值表达式按钮;
- 选中需要调试的表达式,点击右键,选中“Evaluate Expression…”;
注意这里有个 Code Fragment Mode,这个是支持代码片段,可以输入多行表达式,返回最后结果。
变量观察区
把一个变量或者表达式添加到变量观察区也有两个方法:
- 点击变量观察区的 + 号;
- 选中需要调试的表达式,点击右键,选中“Add to Watches”;
修改变量值
在调试过程中,我们可以方便的修改某个变量的值,以方便我们的调试。
在Variables窗口中选中改变量,右键点击,然后选择“Set Value…”就可以修改变量值。
上图中变量 a
的值是2,现在我们想观察一下 a
为 20 的执行结果,我们不必在代码中修改然后编译运行程序这种方法来进行,用上图的方法和轻松的可以达到目的。
断点调试
普通断点
普通断点也叫行断点,在需要调试的代码左方区域用鼠标左键点击,出现断点圆圈标记时即设置了一个行断点。代码执行到此位置时会自动停下来。
方法断点
在方法名所在行断点位置单击鼠标会生成一个方法断点,当执行到这个方法时使程序停止。
这种断点在当前的代码和运行代码不匹配是非常有用,可以执行到特定的方法。
需要注意的是:方法断点有可能会拖累你的调试速度,使得调试时代码执行非常卡顿,当你看到Android Studio 报这样的提示时: Method breakpoints my dramatically slow down debugging
,那你就需要去看一下是否有很多的方法断点存在,去掉这些断点会使调试流畅很多。
条件断点
所谓的条件断点就是在特定条件发生的断点,也就是说,我们可将某个断点设置为只对某种事件感兴趣。
断点处右键单击,在弹框的Condition处填写过滤条件。此处我们只关心 i==2
的情况,因此填写i==2
。那么代码在变量 i
为 2 时才会停下来。
日志断点
该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。
步骤如下:
在断点出右键单击,在弹出的对话框中取消选中Suspend,在弹出的控制面板中,选中 Log evaluated 和 Condition,然后填写断点条件以及输出日志信息。
如下图:
在 i
为 2 时才会输出 Test Log Break Point
这条日志。
异常断点
异常断点顾名思义就是在调试过程中,一旦发生异常(可以指定某类异常),则会立刻定位到异常抛出的地方。
通过这类断点,我们可以在调试异常中,可以进行运行异常时及时定位及调试。
步骤如下:
点击View Breakpoints,在窗口中点击 + 号,选择 Java Exception Breakpoints,
在输入框中输入我们关注的异常类型。
在调试过程一旦发生该异常,调试器就会定位到异常发生处。
属性断点
我们可以为一个类的属性设置断点,那么这个断点就叫属性断点,当这个属性值被修改的时候,程序暂停在修改处。
属性断点的使用和添加普通的断点并无不同,只是断点图标稍有不同。
设置技巧
http://blog.csdn.net/heqiangflytosky/article/details/51140346
常用插件
http://blog.csdn.net/heqiangflytosky/article/details/50764020
- jclasslib bytecode viewer:查看 Java 类字节码的插件。安装成功后,选中类文件,在View->Show Bytecode With jclasslib
- database navigator:查看数据库插件