首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么当我跳过Eclipse时,Eclipse会进入其中呢?

为什么当我跳过Eclipse时,Eclipse会进入其中呢?
EN

Stack Overflow用户
提问于 2018-05-15 02:14:02
回答 2查看 630关注 0票数 1

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

我正在编写一个回溯算法(一个递归函数-它称为自己)。

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

我正在调试我的代码,我想转到for循环的下一个迭代,所以当我到达这一行时,我点击了“步骤”。但是它会进入,并带领我完成下一个回溯函数。

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

为什么会发生这种情况?我怎么才能避免这件事,而实际上却要走一步呢?如果这一步做不到我想做的事,我该用什么?

下面是我的完整函数的代码:

代码语言:javascript
运行
复制
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));
        }
    }
}

我已经在断点的位置发表了评论。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-05-15 02:30:04

按照思路,这是断点.

在大多数情况下,断点会停止控制流。

Eclipse有禁用单个断点和禁用所有断点的选项。对于有条件的断点,您的情况可能是正确的:

  1. 右键单击断点并选择断点属性。这将弹出一个具有“命中计数”和“条件”的对话框,该对话框在大多数情况下都能工作,如果没有,则会使人感到困惑。
  2. 如果选中“条件”,这将启用一个文本框,在该文本框中,您可以编写条件来使用变量来生成真正的语句。因此,您可以输入"index==1000“,然后当您深入1000个呼叫时,它就会停止。

我自己也没有用过“命中计数”。

票数 0
EN

Stack Overflow用户

发布于 2018-12-19 21:41:48

我有一个类似的问题,并找到了类似的解决方案,张贴在这里供参考。

问题:

  • 调试会话“进入”每一步(F6)操作的每一行

解决方案:

  1. “运行->删除所有断点”
  2. ‘运行->重新启动’

结果:

  • “steps (F6)”步骤现在按预期在活动调试行上执行。

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50341390

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档