当前位置: 首页 > 面试题库 >

Eclipse调试器中的Step Into和Step Over有什么区别?

公羊涛
2023-03-14
问题内容

我想调试Java程序的整个流程。Eclipse中F5(进入)和F6(进入)之间有什么区别?


问题答案:

考虑以下代码,将当前指令指针(将在下一步执行的行,由表示->)放在f(x)in 的行g(),并由g(2)in 的行调用main()

public class testprog {
    static void f (int x) {
        System.out.println ("num is " + (x+0)); // <- STEP INTO
    }

    static void g (int x) {
->      f(x); //
        f(1); // <----------------------------------- STEP OVER
    }

    public static void main (String args[]) {
        g(2);
        g(3); // <----------------------------------- STEP OUT OF
    }
}

如果此时要 进入 ,则将移至中的println()f(),进入函数调用。

如果要在那一步 结束 ,您将移至中的f(1)g(),从而结束函数调用。

调试器的另一个有用功能是单步 退出 或单步 返回。
在这种情况下,单步返回基本上将使您遍历当前函数,直到您返回一个级别。换句话说,它将逐步执行f(x)f(1),然后返回到调用函数,最后到达g(3)in
main()

Eclipse(至少是Europa,这是我目前可以使用的唯一一个)F5用于step intoF6for step overF7for
step return



 类似资料:
  • 问题内容: Eclipse的Java编译器是否只是包裹该程序的同一个内核的包装器,还是完全独立的编译器?如果是后者,为什么还要重新发明轮子呢? 问题答案: Eclipse实现了自己的编译器,称为Java Eclipse编译器(ECJ)。 它不同于Sun JDK附带的编译器javac。一个显着的区别是Eclipse编译器使您可以运行实际上未正确编译的代码。如果永远不会运行带有错误的代码块,则您的程序

  • 问题内容: 我看到Eclipse有两种主要的发行版本- 一种在3.6、3.7、3.8路径上,另一种在4.0、4.1路径上(http://www.eclipse.org/e4/)。 我不清楚这两种分布之间的区别是什么? 问题答案: 3.7(代号)和3.8是漏洞修复和稳定性版本,而4.0、4.1、4.2(代号)是成熟的平台功能集。版本3.8和4.2同时进行。您可以在此处找到有关Eclipse项目计划的

  • 问题内容: 在Eclipse中,modulepath和classpath有什么区别,我应该使用哪一个在lib文件夹中添加jar?为什么JRE系统库出现在modulepath中? 问题答案: 模块系统主要对代码有以下影响: 只能从一个模块访问一个软件包(嵌套的软件包被视为单独的软件包,因此即使该软件包在模块中,该软件包也可以在模块中) 您只能访问其他模块导出包中的公共字段和代码方法。即使是反射也是如

  • 在Eclipse中,modulepath和classpath之间有什么区别,我应该使用哪一个在lib文件夹中添加一个jar?为什么JRE系统库会出现在ModulePath中?

  • 问题内容: 而且似乎都返回了。是否有细微的区别或可以互换使用?另外,是超阶级的公共财产吗?(我知道这是存在的,但似乎在javadocs中找不到任何提及) 问题答案: 一个是实例方法,因此它返回特定对象的类,另一个是Class常量(即在编译时已知)。 两种情况都返回Class对象的实例,该实例描述了特定的Java类。对于相同的类,它们返回相同的实例(每个类只有一个Class对象)。 到达Class对

  • 问题内容: 我一直认为Java 中的运算符用于验证其两个布尔操作数是否均为,并且该&运算符用于对两种整数类型进行按位运算。 最近我知道,也可以使用运算符来验证其两个布尔操作数是否均为,唯一的区别是即使LHS操作数为false,它也会检查RHS操作数。 Java中的运算符是否在内部重载?还是在这背后有其他概念? 问题答案: <-验证两个操作数 <-停止评估第一个操作数是否为false,因为结果为fa