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