1). 跟踪程序的运行过程,找出问题出现的地方,更快的解决问题(bug)
2). 梳理已有功能代码的运行逻辑流程
1). 开启Debug的一般步骤:
- 设置断点 : 在某个方法体的特定行打断点

2. Debug运行

3. 进入Debug视图模式, 运行至断点处悬停


2). Debug视图的组成
1 : 常用debug操作工具栏
2 : 线程堆栈视图
3 : 变量视图、断点视图
4 : 代码视图
3). debug常用操作工具栏

1 : 代表执行完当前断点区域进入下一个断点或结束
2 : 中断程序
3 : 进入当前行的方法(单步跳入)
4 : 执行完当前行, 进入下一行(单步跳过)
5 : 跳出当前方法执行(单步跳出)
4). 线程堆栈视图

5). 变量视图

1 : 为变量名视图,显示当前代码行中所有可以访问的实例变量和局部变量
2 : 显示所有的变量值
3 : 显示当前选中变量的值
6). 断点视图

1 : 移除断点
2 : 临时停用/启用断点
1). 打断点: 在应用中可能有问题的代码前添加断点
2). debug运行: debug方式运行安装应用
3). 情况一: 可能直接进入debug模式视图, 并悬停在断点处
情况二: 没有进入debug模式视图, 需要进行一定的操作才进入debug模式视图
4). 进入debug视图后, 利用debug工具栏和相关视窗进行调试
1)、跳过、进入、返回
- F6-Step Over:移动到下一行。如果当前行有方法调用,这个方法将被执行完毕返回,然后到下一行。
- F5-Step Into:移动到下一步,如果当前的行是一个方法调用,将进入这个方法的第一行。
- F7-Step Return:继续执行当前方法,当当前方法执行完毕的时候,控制将转到当前方法被调用的行。
F8-Resume : 执行完当前断点区域, 进入下一个断点处/结束

2)、观察变量的值
- 将鼠标停留在变量上 或者 选中变量后按Ctrl+Shift+i查看变量值
- 选中变量, 右键–>watch, 在Expressions View中添加监视。


3). 使所有的断点暂时失效
- 按下此按钮后, 所有的断点都会直接路过, 再次点击后所有断点就会立即生效
- 有时在程序运行的某个阶段不想要断点, 但后面的阶段又需要

4). 条件断点
- 可以添加一个boolean类型的条件来决定断点是否被跳过。如果条件为真,在断点处程序将停止,否则断点被跳过。

5). 异常断点
- 在断点view中有一个看起来像J!的按钮,我们可以使用它添加一个基于异常的断点,
- 例如我们希望当NullPointerException抛出的时候程序暂停,我们可以这样:

6). 成员变量断点(在Android Eclipse中不可用)
- 他允许当一个选定的属性被访问或者被更改的时候程序执行暂停,并进行debug。
- 最简单的办法是在类中声明成员变量的语句行号左边双击,就可以加入一个成员变量断点。
7). 方法断点
- 添加方式: 在方法声明行左侧栏双击
- 只要当前方法被调用或调用完成程序就会悬停


8). Step 过滤(少)
- 当我们在调试的时候摁F5将进入方法的内部,但这有个缺点有的时候可能会进入到一些库的内部(例如JDK),
- 可能并不是我们想要的,我们可以在Preferences中添加一个过滤器,排除指定的包。

断点分类:
- Line breakpoint : 方法体的某条语句行——
- Watchpoint(FieldPoint) : 成员变量声明行
- Method breakpoint : 方法声明行
- Exception breakpoint : 添加异常类型