用Java获取当前堆栈跟踪

问题

如何在Java中获取当前堆栈跟踪,例如.NET中可以执行Environment.StackTrace

顺便说一句,Thread.dumpStack() 不是我想要的 - 我想获得 stack traceback,而不是打印出来。


#1 热门回答(992 赞)

您可以使用Thread.currentThread().getStackTrace()

它返回一个表示程序当前栈跟踪的 StackTraceElement 数组。


#2 热门回答(225 赞)

Thread.currentThread().getStackTrace();

如果你不关心堆栈的第一个元素是什么,那就好了。

new Throwable().getStackTrace();

#3 热门回答(157 赞)

for (StackTraceElement ste : Thread.currentThread().getStackTrace()) {
    System.out.println(ste);
}