Android Studio学习
——调试
Android Studio
编写代码很多时候都会“差强人意”,很难一次获得想要的结果,出现错误的时候需要查找错误的原因(弱小无助)。小编大概百分之十的时间写代码,百分之九十的时间都在调试,因此我们一定要认识到调试的重要性。调试的方式有多种,这里介绍最常用的两种:Debug调试和Logcat调试。
正所谓,工欲善其事必先利其器,对于一个程序员来说,IDE就是我们器啊。IDE掌控得越熟悉,工作效率就越高(划水摸鱼的时间更多),所以要想效果更高(摸更多的鱼),就要好好学习如何使用IDE。Android 开发无疑是最幸福的,背靠Google爸爸,加上JetBrain的加特,所以就有了(像小编我一样)完美的IDE——Android Studio。
小编先带你认识一下工具栏上的图标:
1. Run按钮:App已经运行,显示该图标,点击重新运行App,App没有运行,该图片显示为一个绿色三角形。
2. Apply Change and Restart Activity按钮: 通过重启Activity但不重启APP来进行资源和代码更改,通常用于修改了代码或资源文件中。
3. Apply Code Changes按钮: 尝试只通过代码更改而不重启APP,通常用于只修改了代码,没有修改任何资源。
4. Debug按钮: 开启Debug模式。
5. Coverage按钮: 只有运行单元测试项目时,该选项才可用。
6. Profile按钮: 性能分析。
7. Attach debugger to Android process 按钮: App已经运行中,点击该按钮,选择需要调试的进程即可。
8. Stop按钮: 停止运行App。
Debug
Debug窗口:
当我们进入调试模式时,AS底部会显示Debug窗口,下图是Debug窗口总览:

断点控制:
以下是断点控制按钮的作用(最左侧那一排)依次为:
1. Return Android Debugger: 重新进入debug模式
2. Resume Program: 跳到下个断点。
3. Pause Program: 暂停运行
4. Stop Debugger: 停止断点模式
5. View Breadpoints: 查看所有断点
6. Mute Breadpoints: 开启\禁用所有断点
7. Get Thread Dump: 获取线程Dump,点击 会进入线程Dump界面
8. Setting: 对一些菜单的显示控制
9. Pin Tab: 多个程序调试时,固定Tab

设置断点很简单,只需要在需要打断点的语句前点击鼠标左键即可,出现红点,则表示设置断点成功,再次点击则取消断点。
Debug界面:

其中最左侧区域显示了所有断点,我们可以在此处直接删除不需要的断点,也可以在语句前添加断点,比如我们添加一个NullPointerException ,这样当我们代码出现空指针异常的时候,就会断点定位到发生异常的位置,非常方便。


管理控制断点:

右上方区域是对断点进行操作控制
1. Enable: 是否开启该断点。
2. Suspend: Android 系统会访问我们给程序分配内存块时,暂停应用进程。后面All表示暂停所有线程,Thread 代表暂停当前线程。
3. Condition: 这个非常有用,就是常说的条件断点。一般用在循环里面,比如一个for循环,当i=5的时候,执行某个操作,但如果i是一个很大很大的数时,难道我们要循环一遍遍走吗?其实可以直接在condition 里面设置条件,
直接到达我们需要的地方。
单步调试:

1. Step Over(F8): 单步跳过,要前进到下一行代码,如果方法内部有断点,会暂停。
2. Step Into(F7): 单步跳入,如果断点包含子方法则进入方法。
3. Force Step Into: 强制单步跳入,在Step Info的基础上能进入任何方法。
4. Step Out(shift+F8): 单步跳出,与单步跳入相对,要前进到当前方法之外的下一行。
5. Drop Frame: 点击该按钮后,你将返回到当前方法的调用处重新执行,并且所有上下文变量的值也回到那个时候。
6. Run to Cursor(Alt+F9): 执行到光标处。
7. Evaluate Expression: 可以输入任何符合语法的计算表达式,包括变量、方法等调用。
Log
Log的过滤与折叠:

上图中的输出信息中可能包含了许多我们并不关心的内容,例如日期和线程 ID等。我们其实可以轻松地调整内容的显示,只需要点击 Logcat 工具栏中的设置图标,便会弹出一个 Configure Logcat Header 窗口,在这里取消那些不想看到的信息即可:

这样一来,就获得了更加简洁的日志输出,如下:

然而,这里仍然掺杂了许多没用的内容,我们可以使用搜索功能解决这一问题,只要在搜索中输入一部分调试信息来对Logcat窗口进行过滤,如下图:

将我们想要的内容提炼出来。
Log调试:
Logcat调试方式很简单,在可能出现错误的地方将变量的值打印出来,方便分析错误原因。这里编写一个简单的Java程序,如下:

每个大程序里都有一个不安分的小程序,想要成为一名好的开发人员,你得先真正学会 Debug 才行。





