gpt4 book ai didi

java - 为什么当我点击“step over”时 Eclipse 会进入?

转载 作者:行者123 更新时间:2023-11-30 06:10:31 27 4
gpt4 key购买 nike

正如您可能猜到的那样,我正在 Eclipse Oxygen 中使用 Debug模式来调试我的代码。

我正在编写一个回溯算法(一个递归函数 - 它调用自身)。

Backtrack 函数中有一个 for 循环,在 for 循环结束时,如果满足某些条件,则运行以下代码: Backtrack(csp, index + 1, CopyCSP(currentSolution)); .

我正在调试代码,并且想要进入 for 循环的下一次迭代,因此当我到达这一行时,我点击了“跳过”。但它会介入并引导我完成下一个回溯功能。

我知道它实际上是下一个函数,因为正如您所看到的,index 变量增加了 1,这确实发生了。

为什么会发生这种情况?我怎样才能避免这种情况并真正跨过去?如果步骤不能满足我的要求,我应该使用什么?

这是我的完整功能的代码:

private void Backtrack(CSP csp, int index, CSP currentSolution) {
//BREAKPOINT IS HERE
if(index == csp.numVars) {
currentSolution.PrintSolution();
csp.PrintSolution(currentSolution);
solved = true;
return;
}
for(int test = 0; test < csp.MaxDomainSize(); test++) {
if(solved) {
return;
}
if(test < currentSolution.vars[index].domain.size) {
currentSolution.vars[index].value = currentSolution.vars[index].domain.get(test);
}
else {
continue;
}
boolean satisfied = true;
for(int i = 0; i < csp.constraints.size; i++) {
if(!csp.constraints.get(i).Satisfied(currentSolution.vars, index)) {
satisfied = false;
}
}
if(satisfied) {
System.out.println("Variable " + index + " satisfied by " + currentSolution.vars[index].value + ".");
Backtrack(csp, index + 1, CopyCSP(currentSolution));
}
}
}

我在断点所在的位置添加了注释。

最佳答案

我遇到了类似的问题并找到了类似的解决方案,在此发布以供引用。

问题:

  • 调试 session 针对每个“单步执行 (F6)”操作“单步执行”每一行

解决方案:

  1. '运行->删除所有断点'
  2. '运行->重新启动'

结果:

  • “单步执行 (F6)”现在可按预期跨过 Activity 调试行。

为了清晰和简单而分享,如果遇到的话,希望这会有所帮助。

关于java - 为什么当我点击“step over”时 Eclipse 会进入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50341390/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com