调试Eclipse中的递归方法 - 避免陷入更多嵌套调用的任何聪明方法?

时间:2014-07-25 23:18:56

标签: java eclipse debugging

我在调试递归方法时遇到的一个常见问题是,当我想调试给定的代码时,我无法避免陷入更深入和更深入的堆栈。避免被困的唯一方法是手动禁用BP,然后在我感兴趣的代码块通过后再次设置它。

enter image description here

在上面的图片中,我只想对每次迭代的循环变量进行一些漫步,看看他们是否按照自己的意愿行事,如果一切都很好,花花公子,但我目前只得到每次调用combinations的第一次迭代!

有什么聪明的想法来解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

如果您想仅针对某些条件或i递归深度命中断点,请尝试使用条件断点。如果要在一些测试/验证之后展开递归,在调试时可以从eclipse调试器更改基本条件变量的值。

答案 1 :(得分:0)

如果你有能力修改递归方法,我经常会这样做。

int combinations(int, a1, int a2) {
    return(combinationsImpl(a1,a2,0));
}

int combinationsImpl(int, a1, int a2, int level) {
    if(done) {
        // on done 
        return(value);
    }
    // you can use level to do conditional break points, prints etc
    // you can save the value when it crashes or throws an exception etc
    // if you need to see variables in the stack log the level and the variables
    // to console or a file and then see on what level values become anomalous etc. 
    return(combinationsImpl(a1,a2,++level));
}