为什么Java步骤返回会遇到断点

为什么Java步骤返回会遇到断点,java,eclipse,debugging,Java,Eclipse,Debugging,我有一个带有链式构造函数的简单Java类分数 public class Fraction { private int numerator; private int denominator; public Fraction(){ // no-arg constructor -> setNumerator(0); setDenominator(0); } public Fraction(Fraction f){ //copy construc

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

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);
 }
}

我在每个构造函数的第一行上都有断点(标记为->)。现在,如果我在一个构造函数中的断点处停止,并在EclipseIDE中点击“StepReturn”,那么执行将在下一个链式构造函数断点处停止,而不是从构造函数返回。我不理解这种行为。我认为步骤返回应该完成方法的执行并返回。那么为什么它会在下一个链式构造函数中命中断点呢

请参见下文解释的有关步进返回的详细信息

所有活动断点都将产生调试光标停止,无论您是否执行
恢复
步进/步过/返回
。光标将在有活动断点的位置停止,代码将执行。(从我的角度来看)我会说感谢上帝它做到了。有时,您会在整个代码中添加断点,因为您不确定气味来自何处;)

当您不需要停止时,“跳过所有断点”更简单。有一个
CTRL+ALT+B
快捷方式可在跳过所有断点之间切换此功能。或者在不需要的时候逐个禁用这些点


不同的调试执行步骤包括: 继续

恢复挂起的线程

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

进入

进入突出显示的语句

(以在当前执行的代码行执行下一个方法调用。 若要单步执行方法,必须暂停执行并单步执行代码。)

跳过

跳过突出显示的语句。执行将在下一行继续,或者在同一个方法中,或者(如果您在一个方法的末尾),它将在调用当前方法的方法中继续。光标跳到方法的声明并选择此行

(在当前执行的代码行跳过下一个方法调用(不输入)。即使该方法从未进入,该方法也将正常执行。 若要跳过某个方法,必须暂停执行并单步执行代码。)

步进返回

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

(从已步进的方法返回。即使我们从该方法返回,该方法内的其余代码仍将正常执行。要从方法步进返回,必须暂停执行并逐步执行代码。)

暂停

挂起目标的选定线程,以便您可以浏览或修改代码、检查数据、执行步骤等

(停止调试目标中当前选定线程的执行。选定线程挂起后,您可以检查其堆栈帧。)

终止

终止选定的调试目标

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

终止并重新启动

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

(要首先终止选定的调试目标,然后重新启动它。一旦启动终止,它可以自动从调试视图中删除。要更改此设置,请使用运行/调试->启动首选项页。)

终止并删除

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

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

终止/断开所有连接

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

(在“调试”和“控制台”视图中终止所有正在运行的调试目标。如果无法终止目标,则将断开连接。一旦终止启动,可将其从“调试”和“控制台”视图中自动删除。若要更改此设置,请使用“运行/调试->启动首选项”页面。)


所有活动断点仍适用。到达第一个断点后,请尝试禁用所有断点,然后单击步骤返回,然后重新启用所有断点。@AndrewS,谢谢。这就是我一直在寻找的答案。我知道在命中第一个一步返回后禁用所有断点会像预期的那样工作,但是我没有找到任何官方文档说在返回之前会命中所有活动断点。你知道有任何官方文件提到这一点吗?没有-我所知道的没有直接提到。步骤返回单独描述,没有提到它如何与其他执行控制命令交互。我知道步骤返回的含义。我不知道退出时为什么会碰到其他断点。我已经用更新和详细信息链接更新了答案。无论您是单步执行、跳过还是返回,所有处于活动状态的断点都将是调试光标所在的位置。光标将在有活动断点且代码已执行的位置停止。(从我的角度来看)我会说感谢上帝它做到了。有时,您在整个代码中添加了断点,但并不确定气味在哪里。当需要时,禁用和启用更简单;)请将注释的最后一部分(所有活动断点都将命中)添加到答案:)