查看特定方法的调用堆栈

时间:2012-06-28 23:07:45

标签: java callstack

是否可以使用任何工具在我的应用程序中查看给定方法的完整调用堆栈列表?

我希望看到我在JProfiler中可以看到的类似结果。

然而,我正在寻找一些开源/免费替代方案,而无需进行太多的配置设置。

3 个答案:

答案 0 :(得分:1)

我不确定,但也许你看起来像这个方法

class MyInfo{
    static void showStack(){
        try{
            throw new Exception();
        }catch(Exception e){
            StackTraceElement[] ste=e.getStackTrace();
            for(int i=1; i<ste.length;i++){
                System.out.println(ste[i].getClassName()+"."+ste[i].getMethodName());
            }
        }
    }
}

让我们试试吧

class C1 {
    void methodA() {MyInfo.showStack();}
    void methodB() {methodA();}
}

class C2 {
    static void methodX() {
        C1 c1 = new C1();
        c1.methodB();
    };
    //TEST
    public static void main(String[] args) {
        C2.methodX();
    }
}

C1.methodA
C1.methodB
C2.methodX
C2.main

答案 1 :(得分:1)

jdk附带的jConk有一个Threads选项卡,列出了所有正在运行的线程。选择一个时,它将显示跟踪。您无需任何设置即可连接到本地进程。如果您是远程的,则必须启用远程连接器作为启动选项。屏幕截图来自jdk 1.7。 JConsole

答案 2 :(得分:0)

这会得到你想要的吗?

java.lang.Throwable.getStackTrace()