java监视递归过程中创建的内部堆栈上的值
我试图理解一段涉及递归的代码片段。这是树的预序遍历
/* traversing the tree in pre order */
public void printTreeInPreOrder(Node<T> node) { -- runs in the main method stack
if (node == null)
return;
System.out.println(node.key);
printTreeInPreOrder(node.left); --- Will create first internal stack
printTreeInPreOrder(node.right); --- Will create the second internal stack
}
我真正想要的是在代码执行的每一步都观察内部堆栈中的值。比如什么价值观正在被推动&;从本例中创建的两个内部堆栈中弹出
它确实有助于理解递归程序的流程
我研究了一下,发现了一些答案,比如:
System.out.println(Arrays.toString(Thread.currentThread().getStackTrace()));
这给了我这个控制台
没有太大帮助,因为我已经知道了流程,我需要在流程中查看内部堆栈中的值
我还阅读了有关使用Eclipse调试器的内容 我启用了静态变量&;也显示参考资料
这给了我这个
还是没用。太复杂了
我想要一些简单的东西,比如
堆栈1:3 2 1
堆栈2:1
可能吗
# 1 楼答案
可以在eclipse中的
printTreeInOrder()
调用处设置断点,开始调试并监视其node
参数的值。 在“调试”视图中,可以选择要签出的帧,变量仅显示当前选定帧的变量。如果你继续使用Step Into
(或类似的)程序,你可以看到帧被添加到堆栈中,并从堆栈中移除