文章目录
- 引言
- 一、Android Studio 的调试模式
- 二、Android Studio 的Debug 窗体
- 三、查看方法栈帧和线程堆栈快照
- 四、条件断点调试
引言
作为一个程序员,Debug绝对是最重要的技能和手段之一,毫不客气地说有相当数量的程序员或许没有真正掌握调试技能,尽管Android Studio 已经提供了相当便捷的调试功能,但是他们可能只知道“Debug app”这一种方式进入调试模式,这篇文章很简单但是很实用。
一、Android Studio 的调试模式
在Android Studio中可以通过两种方式进入调试模式:
- 直接点击Debug按钮,以Debug模式启动App
- 启动了App进程之后,点击“Attach to Debugger to Android Process”,然后选择要调试的进程,点击“OK”之后就进入了调试模式,如果有断点就会进入断点。
二、Android Studio 的Debug 窗体
- 以调试模式重启App
- 快速执行到下一个断点
- 停止调试
- 所有的断点视图,可以快速查看所有的断点,进行一系列的动态条件配置
- 快速设置断点无效
- Get Thread Dump 获取线程堆栈快照,点击一次获取一次
- 以Debug模式启动App
- Attack Debugger to Android Process (选择调试线程,App启动后可以快速进入调试模式)
- Step Over(F8 逐句调试,遇到内部函数直接跳过内部执行细节)
- Step Into(F7 逐句调试,遇到内部函数不会跳过内部执行细节)
- Force Step Into
- Step out(当执行到内部函数内时,可以直接略过执行细节直接返回)
- Run to Cursor
通过方法栈帧可以看得出方法的调用路径(自下而上,下部是起点),点击“Get Thread Dump” 可以得到关于线程的更详细的堆栈快照:
- runnable——表示正常运行状态
- waiting——表示阻塞态
Thread Dump是非常有用的诊断Java应用问题的工具。每一个Java虚拟机都有及时生成所有线程在某一点状态的thread-dump的能力,虽然各个 Java虚拟机打印的thread dump略有不同,但是大多都提供了当前活动线程的快照,及JVM中所有Java线程的堆栈跟踪信息,堆栈信息一般包含完整的类名及所执行的方法,如果可能的话还有源代码的行数。
点击对应的线程时就会显示对应的信息,而通过两个变量监控窗体,我们可以通过 “Add to Watchs”实时监控任意变量的值,然后在变量上右键会弹出一些操作:
- 拷贝值、设置值
- Evaluate Expressions 计算表达式,可以模拟计算表达式
- Show Referring Objects 显示某个变量的引用路径
在断点上点击右键,就进入断点的配置窗体:
经过以上配置之后,当view.getId()的值等于R.id.mainMenu1IV时这个断点才有效,即所谓的条件断点。
当然还有更多条件可以去配置,需要你们自己在项目中应用。未完待续…