文档章节

Android Studio Debug技巧

Gnepux
 Gnepux
发布于 2016/12/28 16:55
字数 1385
阅读 84
收藏 0

Android Studio是一个非常优秀的开发工具,同时也内置了非常强大的调试方式,今天来学习一下Android Studio里的调试技巧。

1. 开启调试会话

方式一:运行调试

重新编译整个工程并进入Debug状态。如果开启了Instant Run,那么也具有Instant Run的特性。

方式二:附加进程调试

通过直接连接手机上正在运行的进程进行调试。如果一个测试人员拿过来一部程序运行到一半的手机,问你“这个网络调用怎么报错啊?”,这时使用这个功能就特别有用。

PS:只有在需要调试的那部分工程代码和进程匹配才能正确调试并定位问题,否则代码不知道会跳转到哪去~

选择要连接的进程

连接成功后在调试终端中会显示以下日志。

2. 断点Breakpoint

一、添加/删除断点

添加、删除断点无需多做介绍了。最简单的方式就是在每一行左边的空白处点击一下添加,再店家一下断点删除。

二、管理断点

打开断点管理窗口

左边列出工程中所有的断点,可以增加、删除、关闭断点。同时可以设置每个断点的属性。

  • Enable:控制断点是否可用,不会删除该断点,只是控制断点是否可用。
  • Suspend:控制运行到该断点时线程是否挂起。如关闭该选项,线程不会挂起,但依然会执行为该断点设置的其他功能。比如Log。
  • Condition:设置执行该断点的条件,具体见条件断点
  • Log message to console:将断点自身的消息打印到console中。
  • Log evaluated expression:打印自定义的表达式,具体件日志断点
  • Remove once hit:设置一次性的断点,执行过该断点就被删除。
  • Disabled until selected breakpoint is hit:设置执行该断点的关联条件。

三、断点的分类

根据作用和调试场景的不同,Android Studio中的断点可以划分为以下几类断点:一般断点条件断点日志断点方法断点异常断点成员观察点(Field WatchPoint)。各类断点没有明确的界限,有时需要相互配合使用才能快速地定位问题。

2.1 一般断点

一般断点通常配合单步调试使用。

单步调试

Android Studio提供了多种步进方式。

  • Step Over:单步前进,不进入子方法;
  • Step Into:单步前进,如果断点包含子方法则进入方法(不会进入官方类库的方法);
  • Force Step Into:在Step Into 的基础上能进入任何方法;
  • Smart Step Into:语句包含两个或者以上方法链式调用,可以选择进入那个方法,包括匿名内部类,Lamda表达式也可以;

  • Step Out:单步前进,如果已在子方法里面则跳出;
  • Run to Cursor:直接跳到光标定位的地方,这个功能非常有用。
  • Drop Frame:点击该按钮后,你将返回到当前方法的调用处重新执行,并且所有上下文变量的值也回到那个时候。只要调用链中还有上级方法,可以跳到其中的任何一个方法;
  • Resume Program:继续执行;

2.2 条件断点

在断点的位置设置条件,那只有符合条件的情况下才停下来,例如调试一个for循环的时候有几百次循环但是想看到某个次数时候则相当方便。

2.3 日志断点

勾选Log evaluated expression并填入表达式,执行到此断点时会在debug console中打印此表达式。可以根据需要去掉suspend。

2.4 方法断点

在方法开头设置,断点标识红色四黑点的标识。并且可以选择进入和退出方式时观察。

2.5 异常断点

设置异常断点,在程序发生异常的时候会进入断点。可以指定Any exception或特定类型的Exception。

2.6 成员观察点(Field WatchPoint)

为某个类的全局变量设置成员观察点,当该变量被访问或改变的时候进入断点。

3. 观察调试

  • 在断点停留的时候,在变量上Alt+鼠标左键就能弹出变量信息窗口。
  • 在Android Studio下方的Debug窗口的Variables中也会显示所有能定位到的变量。
  • 可以在Watches窗口中添加关注的变量。这样在程序调试的过程中可以实时地观察该变量。并同时观察多个变量。

  • 右键点击变量,选择Set Value可以实时更改变量值

  • 右键点击变量,选择Mark Object进行标记

  • 计算表达式,这个功能在调试时非常有用。点击下图的图标打开窗口:

Expression Mode下输入表达式进行Evaluate可以看到表达式的值:

Code Fragment Mode下输入代码片段可以看到最后一个表达式的值:

结束语

Android Studio的Debug技巧基本介绍结束了。本文中介绍了Android Studio开启Debug模式、断点的分类、观察变量值。在实际的Debug过程中,需要灵活地使用Debug技巧,才能快速地定位问题。

 

参考链接

Android Studio 调试技巧

http://www.cnblogs.com/wust221/p/5427094.html

android studio学习----调试---断点调试

http://blog.tinyx.cc/android-studio-debug.html

© 著作权归作者所有

上一篇: 原型模式Prototype
下一篇: 自定义ViewGroup
Gnepux
粉丝 3
博文 96
码字总数 77557
作品 0
南京
私信 提问
Gradle更小、更快构建APP的奇淫技巧

本文已获得原作者授权同意,翻译以及转载 原文链接:Build your Android app Faster and Smaller than ever 作者:Jirawatee 译文链接:Gradle更小、更快构建APP的奇淫技巧 翻译人:MrTryin...

终端研发部
01/04
15
0
Windows环境下Android Studio系列5—日志调试

定制Logcat调试日志字体颜色 Logcat是Android开发调试中最常用的一个工具,Android Studio 1.2.2中默认对Logcat调试的颜色已经有所区分,但如果你想要定制自己的调试日志对应的字体颜色,以便...

一配
2015/07/15
10.6K
1
Android 开发人员必知的50个秘诀、技巧和资源

作者撰写本文的初衷,是为了罗列出Android Studio有用的提示、技巧、快捷方式和参考资源,将提高您的整体效率和操作性能。 显然,还有很多优化、快捷方式等,但作者为了保持这篇文章的简短,...

王练
2017/01/11
2.9K
9
Android Studio 使用技巧

录制了3集 Android Studio使用技巧,适合从eclipse迁移到Android Studio的同学,大家有兴趣可以看一下! Android Studio 使用技巧大全

W320K
2016/02/22
647
1
Windows环境下Android Studio系列4—界面介绍

参考资料 [1] Android Studio常用功能介绍, http://ask.android-studio.org/?/article/23 [2] Windows环境下Android Studio系列1—下载与安装, http://my.oschina.net/1pei/blog/467210 [3] ......

一配
2015/06/23
1K
0

没有更多内容

加载失败,请刷新页面

加载更多

Blockstack-2 :Blockstack ID注册

本篇文章主要记录Blockstack ID注册的流程; 在介绍注册流程之前,先简单的介绍一下Blockstack ID; 相对于传统互联网来说,Blockstack ID更像是统一的账号系统;即一个账号即可登录和授权所...

Riverzhou
23分钟前
1
0
面试官问:平时碰到系统CPU飙高和频繁GC,你会怎么排查?

处理过线上问题的同学基本上都会遇到系统突然运行缓慢,CPU 100%,以及Full GC次数过多的问题。当然,这些问题的最终导致的直观现象就是系统运行缓慢,并且有大量的报警。本文主要针对系统运...

Java高级架构师n
48分钟前
21
0
面向对象编程

1、类和对象 类是对象的蓝图和模板,而对象是实例;即对象是具体的实例,类是一个抽象的模板 当我们把一大堆拥有共同特征的对象的静态特征(属性)和动态特征(行为)都抽取出来后,就可以定...

huijue
今天
21
0
redis异常解决 :idea启动本地redis出现 jedis.exceptions.JedisDataException: NOAUTH Authentication required

第一次安装在本地redis服务,试试跑项目,结果却出现nested exception is redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required错误,真是让人头疼 先检查一...

青慕
今天
33
0
Spring 之 IoC 源码分析 (基于注解方式)

一、 IoC 理论 IoC 全称为 Inversion of Control,翻译为 “控制反转”,它还有一个别名为 DI(Dependency Injection),即依赖注入。 二、IoC方式 Spring为IoC提供了2种方式,一种是基于xml...

星爵22
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部