打印堆栈跟踪包括已完成的方法

时间:2014-01-18 22:09:53

标签: java stack-trace throwable printstacktrace

所以,我有这个类,我想打印调用哪些方法。当我运行它时,它只打印trace和main,但不打印method1和method2。如何更改它以便打印method1和method2,即从main调用的方法?

public class SomeClass
{
    public void method1() {}
    public void method2() {}

    public static void main(String args[]) throws Throwable 
    {
        SomeClass c = new SomeClass();
        c.method1();
        c.method2();
        SomeClass.trace();
    }

    public static void trace() throws Throwable
    {
        Throwable t = new Throwable();
        StackTraceElement[] stack = t.getStackTrace();
        for(StackTraceElement s : stack)
        System.out.println(s.getMethodName());
    }
}

1 个答案:

答案 0 :(得分:6)

method1method2已被调用,但已完成他们的工作,因此他们没有理由进入跟踪。堆栈跟踪的工作是向您显示正在进行中的功能(堆栈中哪些调用是未完成的)。

如果您正在寻找可以告诉您调用(但已完成)的内容,那么您正在寻找的工具类别称为“代码覆盖率”测试工具。这不是Java运行库的异常和堆栈跟踪方面的一部分。