我在调试递归方法时遇到的一个常见问题是,当我想调试给定的代码时,我无法避免陷入更深入和更深入的堆栈。避免被困的唯一方法是手动禁用BP,然后在我感兴趣的代码块通过后再次设置它。
在上面的图片中,我只想对每次迭代的循环变量进行一些漫步,看看他们是否按照自己的意愿行事,如果一切都很好,花花公子,但我目前只得到每次调用combinations
的第一次迭代!
有什么聪明的想法来解决这个问题吗?
答案 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));
}