1、Debug概述
2、调试按钮
3、功能按钮
4、断点
4.1、断点概述
4.2、行断点
4.3、方法断点
4.4、属性断点
4.5、异常断点
5、回退方法
6、修改变量值
7、执行表达式
8、运行多行代码
9、断点暂停条件
10、断点暂停类型
1、Debug概述
Debug是什么
Debug是一种程序,一种调试工具,是程序员检查修改问题的工具。
Debug的作用
**1.**排除故障,排除错误;
**2.**检查程序,找出程序中的问题.
Debug的窗口
**1.**方法调用栈:该区域显示了该线程调试所经过的所有方法,勾选右上角的Show All Frames按钮,就不会显示其它类库的方法
**2.**变量区(Variables):在变量区可以查看当前断点之前方法内的变量
**3.**查看变量区(Watches):可以将变量区的变量拖到该区域进行查看
Debug的步骤
**1.**设置断点
**2.**启动Debug运行模式
方式一:
代码编写页面右上角
方式二:
鼠标右键 —>
方式三:
3.使用调试按钮和功能按钮进行调试:
2、调试按钮
3、功能按钮
4、断点
4.1断点概述
断点是一个标记,当程序执行到断点位置时,程序中断执行,进入调试状态。
断点有如下四种类型:
4.2 行断点
行断点顾名思义就是在某行代码前面打一个断点,当程序运行到断点处就会中断,方便我们对程序进行观察和寻找错误,下图就是一个行断点:
4.3方法断点
方法断点就是打在方法代码行前面的一个断点,当程序执行到方法断点处时会进入到方法的第一行代码,但不执行处于中断状态,当点击恢复程序按钮时,程序会继续执行,但是程序会在方法的最后一行再次停止,如下图所示:
当点击恢复程序后,方法断点会在该方法最后一行自行生成一个断点并停止,如下图所示:
但是这个可以自定义是否自动生成断点,将光标移至方法断点处右键 —> Method exit选项,如下图所示:
4.4属性断点
该断点是设置在定义的属性(变量)前的,它可以对属性的读写、赋值进行监测;当代码中属性过多时,要对某一个属性进行监测时有很大的作用。
局限性,若属性通过反射机制或与反射机制相似的方法进行赋值,此时属性断点是无法对其进行监测的,它只能监测普通赋值语句对属性值的改变。
属性断点对属性的监测:
当恢复程序执行时,global值变化时可以在变量区看到值的变化
4.5异常断点
异常断点和前三种类型的断点有所不同,该断点不需要打断点,当程序执行时遇到程序中有异常是程序会自动终止,并进行标记,比如我们常见的空指针异常(Null Pointer Exception),如下图所示:
该断点默认状态下是针对所有的异常都起作用,但是也可以设置异常断点停止的异常,让程序只在特定的异常处停止例如一个程序中有空指针异常和运算异常(Arithmetic Exception)时只针对运算异常,此时我们就可以自定义设置异常断点。
设置异常断点的方法如下:
方法一:
快捷键Ctrl+Shift+F8调出查看断点的界面,点击左上角的加号标志,选择Java Exception Breakpoints,然后添加所需的异常即可。
方法二:
在Debug的窗口点击功能按钮查开断点界面(View Breakpoints),点击即可打开查开断点界面,之后添加异常即可。
方法三:
找到程序中所设置的任何一个断点右键 —> More打开查看断点界面,之后添加异常即可。
5、回退方法
当断点设置在方法内部,代码正处在Debug状态,但是想要该方法第一行开始观察该方法,此时我们有两种方法:
方法一:
在该方法第一行打上断点重新运行该程序,这种方法适用于代码量少的程序上,当代码量多的时候程序重新运行的时间成本较大,这时就不适合用该种方法,可以采用回退方法的操作。
方法二:
在Debug窗口中的方法调用栈处选择对应的方法,右键 —> Resst Frame,即可回退到方法调用前的状态,之后点击步入按钮即可重新进入方法。
注意:这个功能可以重置方法内的局部变量,但是对全局变量不起作用,即static关键字修饰的变量。
6、修改变量值
代码处于Debug状态时,若想修改某个变量的值时,可以在Debug窗口的变量区找到要修改的变量右键 —> Set Value即可修改变量的值。
7、执行表达式
该功能可以在Debug期间运行任意Java代码,快捷键为:Alt+F8。
不用快捷键的话,在变量区右键 —> Evaluate Expression即可
注意:使用该功能编写要执行的Java代码时最后一定不要加分号(;)
8、运行多行代码
Debug期间若想一次运行多行代码有三种方法;
方法一:
分别在开始的代码行和结束的代码行各打一个断点,然后点击恢复程序按钮即可。
方法二:
光标选中要运行的目标代码行,右键 —> Run to Cursor(Alt+F9)即可。
方法三:
光标选中要运行的目标代码行点击调试按钮
9、断点暂停条件
Debug期间我们若想让断点在特定的条件下暂停就需要该功能,例如:
Map集合当它的元素量是其容量的4/3时就会触发扩容,则在添加语句处加一个断点,然后再断点处右键 —> Condition选项的文本框内添加暂停条件,如下图所示:
10、断点暂停类型
断点的暂停类型由两种:
第一种:
All类型,该类型会将程序所有的线程全部暂停
第二种:
Thread类型,该类型只会暂停断点所在的线程,不会对其它线程造成影响
例子:dome03()方法内分别有t1线程和main线程,此时在t1线程处打一个All类型的暂停断点,Debug运行后会发现控制台上未打印main线程;但是若在t1
线程处打一个Thread类型的暂停断点,Debug后会法相控制台上打印出了main线程,如下图所示:
版权归原作者 明天见See 所有, 如有侵权,请联系我们删除。