Android程序调试方法介绍

静态调试

适用于:经过打印变量的值来查看某一时刻值是否正确面试

Toast(Snackbar)打印法

通常的Android开发人员最爱的调试法,使用简便,仅需一行代码,轻松打印:小程序

Toast.makeText(MainActivity.this, "Toast调试", Toast.LENGTH_SHORT).show();

方即是挺方便的,不过有一点要注意:Android 5.0后,若是把「消息通知的权限」 关闭掉的话,部分机型是不会显示Toast的!你还可使用Snackbar来显示值进行调试:性能优化

Snackbar.make(父view, "Snackbar调试", Snackbar.LENGTH_SHORT).show();

或者其余变通的方法,好比在页面上添加一个TextView,把值直接显示在文本框上。架构

Log日志打印法

Toast调试是挺爽的,可是有两个问题:工具

1.想调试打印多个值的话,Toast会弹个不停,毕竟同一时刻只有「一个」Toast显示在前台; 2.Toast间隔一段时间后会消失,即便你设置了Toast.LENGTH_LONG;性能

可能你一走神,没来得及看调试的值,Toast就消失了。咱们着实须要一种无需担忧调试 结果消失的方法——「Log日志打印法」,就是利用Android系统提供的Log类,在调试 的地方,把日志打印到「Logcat控制台」上,使用方法也很是简单:学习

Log.d("TAG", "Log调试")

当代码执行到这一句的时候,就会在Logcat控制台打印调试信息,另外Logcat默认 会打印出全部的日志信息,咱们能够作一些过滤来定位到咱们调试的日志信息。 首先是:「日志类型」,Android支持6种日志类型,依次以下:优化

Verbose:详细,全部类型的日志信息。 Debug:调试,调试用的日志信息。 Info:信息,正常使用时须要关注的日志信息。 Warn:警告,可能有问题,但没发生错误的日志信息。 Error:错误,运行时出现严重错误的日志信息。 Assert:断言。this

舒适提示: 不要上来就Error级别,我之前打Log所有用Log.e,缘由是日志信息是红色的,好看… 结果被组长吐槽了一顿,以为颜色很差看,你能够按照下述的操做进行自定义。 打开「File」-> 「Settings」-> 「Editor」->「Colors Scheme」->「Android Logcat」 选择日志类型,而后去掉勾选,而后点击选择颜色色值 lua

这是个人配色方案,读者能够设置本身喜欢的颜色:

  • Assert:7A7B8F
  • Debug:0070BB
  • Error:FF7646
  • Info:48BB31
  • Verbose:BBBBBB
  • Warning:3899BB

设置后的配色如图所示:

自定义Logcat日志头信息的显示内容:点击面板上的「Logcat Header」来设置日志头信息 可设置的内容以下:

右侧还能够「过滤日志信息」,支持正则,再右面是过滤特定日志的选项。

若是以为还不够的话,能够点击最右侧的「Edit Filter Configuration」来配置一个本身的过滤器。

另外,还能够对进行「日志搜索」,鼠标点击Logcat中间区域得到焦点,Ctrl + F 调出 搜索工具栏,接着搜索相关的日志内容。 image.png

注意:Android系统的单条日志打印长度是有限的,长度是固定的4*1024个字符长度。

静态调试

用Android Studio提供的Debug模式来程序调试

  1. 基本的调试流程

  2. 打(下)断点 当程序执行到断点所在的代码时,会暂停应用程序的运行,线程被挂起,而后 能够经过调试器进行跟踪。 打断点的方式也很简单,点击某行代码的左侧,会出现如图所示的小红点。

这个小红点就是断点,而在Android Studio中,有多种类型的断点,下面一一介绍

1) 行断点 就是上面这种,对特定行进行调试时用到,点击行所在的左侧边栏便可设置。 右键点击这个断点,会弹出以下所示的设置对话框:

若是你取消了Enabled勾选,断点就处于如图所示的禁用状态:

2)方法断点 若是你把断点下到一个方法前,断点就会变成这样:

这个就是方法断点,通常用来检查方法的「输入参数」与「返回值」。

3)变量断点 有时咱们对程序运行过程并不关心,而只关注某个变量的变化,能够在变量定义前加一个断点。

在程序运行过程当中,若是该变量的值发生改变,程序会自动停下来,并定位到变量值改变的地方,供开发者调试。

4)条件断点 有时会有这样的场景:把断点打到循环体的中,咱们只关心特定循环次数下的运行状况。 好比一个循环10次的循环体,咱们想知道循环到第8次时的运行状况,若是你不知道 条件断点的话,你须要一直按「Run to Cursor」直到知足咱们的条件。 若是用条件断点,当循环体执行到某个条件才停下来,右键断点,输入如图所示的等式条件:

而后能够发现,程序直接跳到i=8的时候才挂起,很是方便。 5)日志断点 调试的时候咱们能够经过打印日志的方式来定位异常代码大概位置,以缩小引起问题的范围,而后再使用断点精肯定位问题。若是是普通的打印日志,咱们须要等待从新构建程序,若是用「日志断点」 就避免这个无心义的等待。使用日志断点很是简单,右键断点,去掉「Suspend」的勾选,会出现 以下所示的弹窗,勾选「Evaluate and log」在此输入想输出的内容。

运行调试后,当执行到日志断点的时候能够看到控制台输出了对应的日志信息,并且程序正常运行,并不会挂起。

若是想查看更详细的信息,好比断点的位置和触发时的堆栈信息,能够勾选「“Breakpint hit” message」和「Stacktrace」,勾选后输出内容会变得更详细:

6)临时断点 所谓的临时断点就是:触发一次后就自动删除的断点。设置的方法有两种:

1.光标移到想打点的行,点击菜单栏「Run」->「Toggle Temporary Line Breakpoint」, 等价于快捷键:「Ctrl+Alt+Shift+F8」 2.更便捷的操做:按住Alt,鼠标点击左侧边栏。 临时断点样式和普通断点没区别,只是点击右键不太同样,以下图所示,鼠标点击后能够去掉临时断点,若是想把临时断点变成普通断点,能够取消勾选 「Remove once hit」的选项。

7)异常断点 用于监听程序异常,一旦程序奔溃,直接定位到异常所在的确切位置。依次点击: 「Run」->「View Breakpoints」打开断点视图。点击「+」,而后选择 「Java Exception Breakpoints」,在弹出的窗口中输入要调试的异常:

除了设置异常断点外,你在这里看到项目设置的全部断点,并进行断点管理与配置。 另外,你还能够设置自定义异常断点,点击「5.Exception Breakpoints」自行配置便可。

最后给你们分享一份很是系统和全面的Android进阶技术大纲及进阶资料,及面试题集

想学习更多Android知识,请加入Android技术开发交流 7520 16839

进群与大牛们一块儿讨论,还可获取Android高级架构资料、源码、笔记、视频

包括 高级UI、Gradle、RxJava、小程序、Hybrid、移动架构、React Native、性能优化等全面的Android高级实践技术讲解性能优化架构思惟导图,和BATJ面试题及答案!

群里免费分享给有须要的朋友,但愿可以帮助一些在这个行业发展迷茫的,或者想系统深刻提高以及困于瓶颈的朋友,在网上博客论坛等地方少花些时间找资料,把有限的时间,真正花在学习上,因此我在这免费分享一些架构资料及给你们。但愿在这些资料中都有你须要的内容。

Android高级技术大纲,以及系统进阶视频,及面试题和答案 面试题及答案 Android高级技术大纲 Android 进阶视频资料

相关文章
相关标签/搜索