Debug调试的作用?
1). 跟踪程序的运行过程,找出问题出现的地方,更快的解决问题(bug)
2). 梳理已有功能代码的运行逻辑流程
如何进行Debug调试?
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 : 临时停用/启用断点
Debug调试Android应用
1). 打断点: 在应用中可能有问题的代码前添加断点
2). debug运行: debug方式运行安装应用
3). 情况一: 可能直接进入debug模式视图, 并悬停在断点处
情况二: 没有进入debug模式视图, 需要进行一定的操作才进入debug模式视图
4). 进入debug视图后, 利用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 : 添加异常类型