接触Android(以及Android Studio)即将四个月,接触了从零开始的项目也接触了开发了好几年的项目,当遇到一个BUG时,我发现我与老员工们之间的差距很大很大,他们能很快的找到问题的所在,一方面肯定是他们的经验所在,另外一方面就是Debug的技巧所在了,所以掌握IDE的调试技巧对于一个程序员来说真的十分重要。
一、调试窗口介绍
- 从暂停状态下继续运行应用。
- 退出调试状态。
- 查看断点信息。
- mute breakpoints 暂时忽略其他断点。
- 定位到当前正在调试的位置。
- Step Over 一步步前进下一行代码,遇到方法时不会进入方法内部,直接执行完代码。
- Step Into 一步步执行代码,遇到方法会进入方法内部第一行(但不会进入系统方法)。
- Force Step Into 与Step Into类似,遇到系统方法时也会进入方法内部。
- Step Out 跳出方法,前进到方法之外的下一行。
- Run to Cursor 执行到光标处,遇到断点会停下,另外一种Force Run to Cursor强制跳转到光标处遇到断点不会暂停。
- Evaluate Expression 计算表达式,遇到断点暂停时可以通过赋值或者表达式改变状态,如下图:
- Variables 变量区 可以看到所有变量信息,调试状态下在变量区点击鼠标右键New Watch新增要查看的变量,或者点击变量区左上角的绿色按钮来添加。
二、断点介绍
鼠标右键点击断点查看断点配置信息:
Enabled: 如果您想指示 Android Studio 暂时忽略该监视点,可以取消选择此选项。取消此选项后代码在执行到这一步时不会进入断点调试状态,但Android Studio 仍会保存该监视点,以便您稍后在调试会话中访问。如下图所示,取消此选项后断点中间变成了绿色。
Suspend: 默认情况下,Android 系统会在其访问您分配给监视点的内存块时暂停应用进程。如果您不需要此行为,可以取消选择此选项 - 取消选择时会出现一些附加选项,您可以利用这些选项来自定义系统与监视点进行交互时的行为:Log message to console 和 Remove [the watchpoint] once hit。如下图所示:
2.1条件断点:
为断点设置条件,设置好条件后断点右下角出现一个灰色问号?,只有满足条件时才执行断点,如下图所示,在for循环内,当i==0,1,2时,不会进入断点,当i==3时,进入断点:
2.2 Log断点
取消勾选Suspend, 然后勾选Evaluate and log,输入调试信息,输出的调试点击Console查看,如下图所示
2.3 异常断点
遇到该异常后自动进入该断点,无需找地方设置断点。
三、再代码中写入日志消息(Log)
使用系统日志,系统日志会在您调试应用时显示系统消息。这些消息包括运行在设备上的应用产生的信息。如果您想利用系统日志来调试应用,要确保您的代码能够在应用处于开发阶段时写入日志消息和打印针对异常的堆叠追踪。
利用Log类在代码中写入日志消息:(优先级从低到高)
- Log.v(String, String) (详细 verbose)
- Log.d(String, String) (调试 debug)
- Log.i(String, String) (信息 information)
- Log.w(String, String) (警告 warning)
- Log.e(String, String) (错误 error)
未完待续!