1

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

我想看到在 JProfiler 中对于给定方法可以看到的类似结果。

但是,我正在寻找一些开源/免费的替代方案,而不必做太多的配置设置。

4

3 回答 3

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
于 2012-06-28T23:38:03.517 回答
1

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

于 2012-06-29T00:40:46.233 回答
0

这会让你得到你想要的吗?

java.lang.Throwable.getStackTrace()

于 2012-06-28T23:13:00.923 回答