Android开发工具----Android Studio调试技巧

0.前言

Android Studio目前已经成为开发Android的主要工具,作为开发者,调试、发现并解决BUG是家常便饭。正所谓,工欲善其事必先利其器,今天我们就来看看Android Studio中的调试技巧。

1.调试面板

首先,来看看Android studio中为我们提供的调试面板(标准情况下):

点击右上角Restore ‘Threads’View可先展示目前相关的线程信息:

2.单步调试区

2.1 Show Execution Point

点击该按钮,光标将定位到当前正在调试的位置。

2.2 Force Step Into

强制单步跳入,和step into功能类似。

主要区别在于:如果当前行有任何方法,不管该方法是我们自行定义还是类库提供的,都能跳入到方法内部继续执行。

2.3 Drop Frame

中断执行,并返回到方法被调用处,在这个过程中该方法对应的栈帧会从栈中移除。并且所有上下文变量的值也恢复到该方法未执行时的状态。

2.4 Force Run to Cursor 

非常好用的一个功能,可以忽视已经存在的断点,跳转到光标所在处。

3.求值表达式

Evaluate expression 

点击该按钮会在当前调试的语句处嵌入一个交互式解释器,在该解释器中,你可以执行任何你想要执行的表达式进行求值操作。

比如,我们在调试时执行到以下代码:

此时执行EvaluateExpression,在该解释器中我们能做什么呢?在这里,我们可以对result进行求值操作:右键要求值,选择evaluate Expression。此时会显示如下:

在弹出的输入框中输入求值表达式,比如这里我们输入Math.min(result,50),如下图:

点击执行,我们发现在Result中已经输出了结果,如下:

3.断点管理区

3.1 Return 

点击该按钮会停止目前的应用,并且重新启动。用于想重新调试时。

3.2 Pause Program 

点击该按钮将暂停应用的执行,如果想要恢复则可以使用下面提到的Resume Program。

3.3 Resume Program

该操作有恢复应用的含义,但是却有两种行为:
1. 在应用处在暂停状态下,点击该按钮将恢复应用运行;
2. 在很多情况下,我们会设置多个断点以便调试。在某些情况下,我们需要从当前断点移动到下一个断点,两个断点之间的代码自动被执行,这样我们就不需要一步一步调试到下一个断点了,省时又省力。

3.4 Stop

(1)对普通的Java项目,点击该按钮意味着退出调试模式,但是应用还会执行完成;

(2)而在Android项目中,点击该按钮,则意味这APP结束运行。

3.5 View Breakpoints

点击该按钮会进入断点管理界面,在这里你可以查看所有断点,管理或者配置断点的行为,如删除,修改属性信息等:

3.6 Mute Breakpoints 

使用该按钮来切换断点的状态:启动或者禁用。

在调试过程中,你可以暂时禁用所有的断点,以实现应用正常的运行。该功能非常有用,比如当你在调试过程中,突然不想让断点干扰你所关心的流程时,可以临时禁用断点。

3.7 Get thread dump

获取线程Dump,点击该按钮将进入线程Dump界面。

线程工具区中最常用的是,可以用来过滤线程,其他的不做解释了。

接下来我们来认识一下线程的类型,表示为不同的图标:

线程状态描述 图标
Thread is suspended.
Thread is waiting on a monitor lock.
Thread is running.
Thread is executing network operation, and is waiting for data to be passed.
Thread is idle.
Event Dispatch Thread that is busy.
Thread is executing disk operation.

3.8 Settings

点击该按钮将打开有关设置的列表:

3.8.1 Show Values lnline

调试过程中开启该功能,将会在代码右边显示变量值,即下图中红框所示部分:

3.8.2 Show MethodReturn Values

调试过程中启用该功能,将在变量区显示最后执行方法的返回值。

举个例子来说,首先,关闭该功能,我们调试这段代码并观察其变量区:

开启该功能之后,再来观察变量区的变化:

继续往下调试:

这个功能简直是棒极了!在调试一段代码,并想看该代码中最后调用方法的最终结果时就非常有用了。

3.8.3 Auto-VariablesMode

开启这个功能后,idea的Debugger会自动评估某些变量,大概就是当你执行在某个断点时,Debugger会检测当前调试点之前或者之后的变量的状态,然后在变量区选择性输出。

举个例子来说明,未开启该功能之前,变量区输出所有的变量信息:

开启之后,当你调试到第13行时,Debugger检测到num变量在之后没有被使用,那么在变量区就不会输出该变量的信息。

3.8.4 Sort valuesalphabetically

开启这个功能后,变量区中的输出内容会按照按字母顺序进行排序,不常用,还是按照默认的顺序好。

3.9 Help

这个不用说了,有任何不明白的都可以查看官方帮助文档。

其他几个操作:Settings、Pin、Close留给各位自己去使用。

4.修改变量值

在调试过程中,我们可以方便的修改某个变量的值,如下:

在上图中,当前result的值经过计算为10,这里我们通过Set Value将其计算结果修改为100。

5.变量观察区

该区域将显示你所感兴趣的变量的值。

在调试模式下,你可以通过Add to Watches将某个变量添加到观察区,操作如下:

这里我们对name比较感兴趣,希望看到它的值的变化情况,因此我们将其“特殊关照”。

需要注意,此时因为name是成员变量,因此在对象观察区也可看到该值。如果是局部变量,无疑只能用这种方式了。

6.断点

6.1 条件断点

所谓条件断点就是在特定条件发生的断点,也就是,我们可将某个断点设置为只对某种事件感兴趣,最典型的应用就是在列表循环中,我们希望在某特定的元素出现时暂停程序运行。比如,现在我们有个list中,其中包含了q,1q,2q,3q四个元素,我们希望在遍历到2q时暂停程序运行,那么需要进行如下操作:

在需要的地方添加断点,如下:

断点处左键单击,在Condition处填写过滤条件.此处我们只关心2q,因此填写s.equals("2q")

6.2 日志断点

该类型的断点不会使程序停下来,而是在输出我们要它输出的日志信息,然后继续执行。

具体操作如下: 同样在断点处左键单击,在弹出的对话框中取消选中Suspend。

在弹出的控制面板中,选中Log evaluated expression,然后再填写想要输出的日志信息,如下:

当调试过程遇到该断点将会输出结果,如下:

6.3 异常断点

所谓的异常断点就是在调试过程中,一旦发生异常,则会立刻定位到异常抛出的地方。

比如在调试异常中,我们非常关注运行时异常,希望在产生任何运行异常时及时定位,那么此时就可以利用该类型异常,在上线之前,进行异常断点调试非常有利于减少正式环境中发生crash的几率。

具体操作如下:在Run菜单项中,选择ViewBreakpoints,如下:

在管理断点面板中,点击+

在弹出的下拉选择列表中,我们选择Java ExceptionBreakpoints。

这里我们选中Search By Name,在下面的输入框中输入我们所关心的异常类型。

此处我们关心NullPointerException,在调试过程一旦发生NullPointerException,调试器就会定位到异常发生处。

6.4 方法断点

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

6.5 Field WatchPoint 

Filed WatchPoint是本质上是一种特殊的断点,也称为属性断点:当我们某个字段值被修改的时候,程序暂停在修改处。通常在调试多线程时尤为可用,能帮我们及时的定位并发错误的问题。其使用和添加普通的断点并无不同,断点图标稍有不同。

7.调试的两种方式

到目前,调试的相关基础我们已经介绍完了,但是不少同学对Android Studio中这两个按钮感到困惑:Debug和Attach process。 
这里我们就简单介绍一下这两者的区别:

Debug:以调试模式安装运行,断点可以在运行之前设置,也可在运行后设置,是多数人最常用的调式方式

Attach process:和Debug方式相比,能够将调试器attach到任何正在运行的进程。比如,我们可以通过attach process到想要调试的进程。然后,在需要的地方设置相关断点即可。

时间: 2024-10-09 16:50:59

Android开发工具----Android Studio调试技巧的相关文章

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具

Android Studio重构之路,我们重新来了解一下Google官方的Android开发工具 记得我的第一篇博客就是写Android Studio,但是现在看来还是有些粗糙了,所有重构了一下思路,覆写了一篇 Google主推-Android开发利器--Android Studio,这可能是最全的AS教程! Android Studio,自Google2013年发布以来,就倍受Android开发者的喜爱,我们本书,就是基于Android Studio来进行案例演示的,大家都知道,Android

Android开发工具全面转向Android Studio(3)——AS project/module的目录结构(与Eclipse对比)

如果AS完全还没摸懂的,建议先看下Android开发工具全面转向Android Studio(2)——AS project/module的CRUD. 1.其实AS project/module的目录结构很简单,我浓缩成2张图给总结了,先看图,再看下面的文字,因为还有些细节图上体现不出来(我这个图上的项目来源于我之前的Eclipse项目,并且有lib项目库相互依赖) 2.上面的图很直观,但也很眼花缭乱,我再针对图总结下重点和疑问点. ①在AS的世界里,文件夹都以模块(module)为单位组织的,其

linux安装安卓开发工具android studio

最近要接触android编程,本来想装eclipse,无意间搜到安卓专门出了开发工具android studio,打算装着试用下 http://www.android-studio.org/ 下载 android studio 有Windows, Mac OS X ,Linux版本 我下的是linux版的 android-studio-ide-135.1629389-linux.zip 解压  unzip android-studio-ide-135.1629389-linux.zip  sud

Android 开发工具及测试工具 汇总

注明:  转自 外部网站 http://www.tuicool.com/articles/EFBjequ 主要介绍和Android开发工具和测试工具相关的开源项目.  Json2Java 根据JSon数据自动生成对应的Java实体类,还支持Parcel.Gson Annotations对应代码自动生成.期待后续的提取父类以及多url构建整个工程的功能 项目地址: https://github.com/jonfhancock/JsonToJava 在线演示: http://jsontojava.a

扯一扯关于android开发工具的破事

一.前言 开发android一转眼之间已经过去一年多了,回想到以前刚开始学习android还是在大学里面,那是看了mars的视频教程就开始android之路,从最开始的环境搭建到开发项目,一步一步自己摸索进步,由于一直没有遇到资深的android工程师带领我,所以自己大部分学习来自于网络的blog,eoe论坛,所以我深爱技术分享这个东西,因为网络的强大是由于一大批人不为任何利益分享自己的技术,所以我们才能在网络上找到答案,就算没有答案也可以找到前人研究的成果,我们就可以踩着前人的肩膀继续前进,技

Android 开发环境 Android Studio

Android Studio 是一个全新的 Android 开发环境,基于 IntelliJ IDEA. 类似 Eclipse ADT,Android Studio 提供了集成的 Android 开发工具用于开发和调试,在 IDEA 的基础上,Android Studio 提供: 基于 Gradle 的构建支持Android 专属的重构和快速修复提示工具以捕获性能.可用性.版本兼容性等问题支持 ProGuard 和应用签名基于模板的向导来生成常用的 Android 应用设计和组件功能强大的布局编

Android开发平台Android Studio学习之一(下载及安装)

偶然所得,除了配置好的Eclipse平台可以开发做Android开发,google又推出了专门用以开发Android程序的平台--Android Studio. Android Studio的优势是:不需要手动配置SDK和AVD Manager,就是说它已经集成了Android 的SDK和虚拟机管理 器,只要你电脑上配置好了JDK,就可以直接开发了. 1简介 Android Studio 是一个全新的 Android 开发环境,基于IntelliJ IDEA. 类似 Eclipse ADT,An

10个不可错过的Android 开发工具

今天麦子学院android开发老师给大家介绍android开发人员必须的10个android开发工具: 1.Eclipse ADT Eclipse ADT 是 Eclipse 平台下用来开发 Android 应用程序的插件.   2.The SDK and AVD Manager 该工具包含很多重要的功能,包括管理不同的 Android SDK 版本(构建目标),你知道的 Android 的版本众多,API上有些兼容性问题.另外该工具还用于管理 Android 虚拟设备配置 (AVD) ,用来配

Android 开发工具下载

Eclipse版Android开发工具(使用迅雷下载): http://dl.google.com/android/adt/adt-bundle-windows-x86.ziphttp://dl.google.com/android/adt/adt-bundle-windows-x86_64.ziphttp://dl.google.com/android/adt/adt-bundle-linux-x86.ziphttp://dl.google.com/android/adt/adt-bundle