跟踪堆栈深度以进行调试

时间:2012-06-22 15:57:02

标签: java eclipse

我对如何跟踪堆栈深度感到困惑。实际上,这个问题与我的一个问题的答案https://stackoverflow.com/a/11157985/1010943有关。答案是正确和理解但我无法理解提示。谷歌搜索也没有透露任何有用的信息。顺便说一下,如果它很重要,那么我正在使用Eclipse IDE

3 个答案:

答案 0 :(得分:3)

只需添加一个名为(例如)深度的int参数 在第一次调用递归函数时,传入深度= 0 无论何时递归,都要经过深度+ 1 因此,深度始终是您到目前为止复发的次数。

或者你可以对调用堆栈上的方法进行一些讨厌的检查,但我不会走那条路! ]

答案 1 :(得分:2)

您可以通过在递归函数中包含深度参数或使用Thread.getStackTrace()来跟踪堆栈深度

答案 2 :(得分:2)

看看http://docs.oracle.com/javase/6/docs/api/java/lang/Thread.html#getStackTrace()

  

返回表示堆栈转储的堆栈跟踪元素数组   这个帖子。如果这样,此方法将返回零长度数组   线程尚未启动或已终止。如果返回的数组是   非零长度然后数组的第一个元素代表顶部   堆栈,这是最新的方法调用   序列。数组的最后一个元素代表了数组的底部   stack,这是序列中最近的方法调用。