为什么Java Step Return会遇到突破点

时间:2017-09-25 12:58:47

标签: java eclipse debugging

我有一个带有链式构造函数的简单Java类Fraction

public class Fraction {

 private int numerator;
 private int denominator;

 public Fraction(){            // no-arg constructor
 -> setNumerator(0); 
    setDenominator(0);
 }

 public Fraction(Fraction f){  //copy constructor
 -> this(f.getNumerator(), f.getDenominator());
 }

 public Fraction (String sFraction){ // String input constructor
 -> this(sFraction.split("/")[0], sFraction.split("/")[1]);
 }

 public Fraction(String sNum, String sDenom){ // Double string constructor
 -> this(Integer.parseInt(sNum), Integer.parseInt(sDenom));
 }

 public Fraction(int iNum, int iDenom){  // two int constructor
 -> this.setNumerator(iNum);
    this.setDenominator(iDenom);
 }
}

我在每个构造函数的第一行都有断点(标记为 - >)。现在,如果我停在其中一个构造函数的断点处并在Eclipse IDE中点击“Step Return”,则执行将在下一个链接的构造函数断点处停止,而不是从构造函数返回。我不明白这种行为。我认为Step Return应该完成方法的执行并返回。那为什么它会在下一个链式构造函数中遇到断点?

1 个答案:

答案 0 :(得分:1)

请参阅下面有关步骤返回的详细说明。

无论您执行resumestep into/over/return,所有活动断点都将生成调试光标停止。在有活动断点的地方停止游标,代码将执行。 (从我的角度来看)我会说感谢上帝它做到了。有时你会在代码中添加断点,因为你不确定气味来自哪里;)

更简单到#34;跳过所有断点"当你不需要停止时。有一个Skip all breakpoints CTRL+ALT+B快捷方式可以在跳过所有断点之间切换此功能。或者在您不需要时逐个禁用这些点。

More details can be read here.

不同的调试执行步骤是:

Resume 恢复

  

恢复暂停的线程。

     

(恢复执行当前挂起的调试目标。)

Step Into 进入

  

进入突出显示的陈述。

     

(在当前执行的代码行中进入下一个方法调用。   要进入某个方法,您必须暂停执行并逐步执行代码。)

Step Over 跳过

  

跨越突出显示的声明。执行将在相同方法的下一行继续执行,或者(如果您在方法结束时)将继续执行调用当前方法的方法。光标跳转到方法的声明并选择该行。

     

(在当前正在执行的代码行中跳过下一个方法调用(不输入)。即使该方法永远不会进入,该方法也会正常执行。   要逐步执行某个方法,必须暂停执行并逐步执行代码。)

Step Return 步骤返回

  

退出当前方法。退出当前方法后,此选项将停止执行。

     

(从已经进入的方法返回。即使我们从方法返回,方法内的其余代码也将正常执行。要从方法返回步骤,必须暂停执行并进行步进通过代码。)

Suspend 暂停

  

暂停目标的选定线程,以便您可以浏览或修改代码,检查数据,步骤等。

     

(暂停在调试目标中执行当前选定的线程。一旦所选线程暂停,您就可以检查其堆栈帧。)

Terminate 终止

  

终止所选的调试目标。

     

(终止与所选调试目标关联的启动。一旦启动终止,它就可以从Debug视图中自动删除。要更改此设置,请使用Run / Debug - > Launching首选项页面。)

Terminate & Relaunch 终止& [重新启动

  

终止所选的调试目标并重新启动它。

     

(首先终止所选的调试目标,然后重新启动它。一旦启动终止,它就可以自动从Debug视图中删除。要更改此设置,请使用Run / Debug - &gt; Launching首选项页面。)< / p>

Terminate & Remove 终止&amp;删除

  

终止所选的调试目标并将其从视图中删除。

     

(要终止与所选调试目标关联的启动并将其从调试视图中删除。)

Terminate/Disconnect All 终止/断开所有

  

终止视图中的所有活动启动。

     

(在调试和控制台视图中终止所有正在运行的调试目标。如果目标无法终止,它将被断开。一旦启动终止,它可以自动从调试和控制台视图中删除。要更改此设置使用Run / Debug - &gt;启动首选项页面。)