IDE篇——Eclipse的Debug功能

    xiaoxiao2024-11-28  70

    文章目录

    Eclipse的Debug功能一、如何调试二、测试代码三、点击step into时可能存在的问题

    Eclipse的Debug功能

    运行程序,没有报错(出现异常),但结果不正确,这种时候,错误很难定位,就需要借助Debug工具,(或者系统比较大的时候,某个地方出错,很难定位)

    如何调试程序: ① 方式一:System.out.println(),边看边输出,只适合程序不大的时候 ② 方式二:Eclipse - Debug调试功能


    一、如何调试

    设置断点 注意:可以设置多个断点Debug As Java Application 注意:在执行到断点之前,不会自动启动Debug视图,相当于依然在执行Run As的功能

    常用操作 操作作用step into 跳入(f5)进入当前行所调用的方法中step over 跳过(f6)执行完当前行的语句,进入下一行step return 跳回(f7)执行完当前行所在的方法,进入下一行drop to frame回到当前行所在方法的第一行resume 恢复执行完当前行所在断点的所有代码,进入下一个断点,如果没有就结束Terminate 终止停止 JVM, 后面的程序不会再执行

    详细解释:

    step over:执行完当前这一行的语句,进入到下一行语句(还没执行下一行);

    step into:进入当前行所调用的方法内部; 【如果一行代码是调用方法,那么step into是进入方法内部(可以一行一行执行方法内的代码),step over则是直接执行完该行代码(即:方法整个执行完并且得到相应返回值)】

    step return:在step into进入某方法内部时,已经检查的差不多了(通常不用整个方法都检测是否有错),想要返回到原先程序流程中,就用step return;

    drop to frame:在step into进入某方法内部时,通过step over一步一步执行,可能某一步没看清楚,想再看一遍,就使用drop to frame回到该方法起始位置,可以重新再来推进;

    resume:推进到下一个断点处,如果没有断点了就执行到程序结束; 【程序执行过程中的输入操作,也会阻塞(要等待用户输入),并不是点了resume就会到达下一个断点】

    terminate:直接终止程序,不看了;


    二、测试代码

    测试代码 1:

    public class DebugTest { public static void main(String[] args) { int i = 10; int j = 20; System.out.println("i = " + i + ", j = " + j); DebugTest test = new DebugTest(); int max = test.getMax(i, j); System.out.println("max = " + max); } private int getMax(int k, int m) { int max = 0; if (k < m) { max = k; } else { max = m; } return max; } }


    测试代码 2:

    public class DebugTest1 { public static void main(String[] args) { int[] arr = new int[] {1,2,3,4,5}; System.out.println(arr); //输出的是地址值 char[] arr1 = new char[] {'a','b','c'}; System.out.println(arr1); //输出的是字符串"abc" } } 之前测试的时候,发现同为基本数据类型,int[] arr 等执行System.out.println(arr); 输出的就是地址值,但是 char[] arr1 输出的是字符串"abc";当时就已经知道调用的是重载方法,现在则可以通过debug再次验证:通过step into发现,进入的是不同的方法,int[] arr 执行 System.out.println(arr); 进入的是 println(Object x) ,而 char[] arr1 进入的是 println(char x[]);

    三、点击step into时可能存在的问题

    点击 step into 时,本应跳转进入当前行代码调用的方法的方法体内,但是有的人点击 step into 后,执行的操作和 step over 一样,即直接执行到下一行代码了究其原因,十有八九是因为Debug Configurations中的JRE使用的是独立装的jre,而不是jdk中的

    右键 —> Debug As —> Debug Configurations 选择JRE(如果有问题,很可能就是这里的jre选择错误) —> Installed JREs 接下来就是 Remove 掉原来的jre,然后 Add 中添加 Standard VM,找到jdk的目录并确认,并把对勾打上,就可以了

    最新回复(0)