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



所以,我有这个类,我想打印调用了哪些方法。当我运行它时,它只打印跟踪和主,而不是方法1和方法2。如何更改它,以便它打印方法1和方法2,即从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());
    }
}

method1method2已被调用但已完成其工作,因此没有理由将它们跟踪。堆栈跟踪的工作是显示哪些函数正在进行中(堆栈上哪些调用未完成)。

如果你正在寻找一些可以告诉你它们调用(但已经完成)的东西,你正在寻找的工具类别被称为"代码覆盖率"测试工具。这不是 Java 运行时的异常和堆栈跟踪方面的一部分。

相关内容

最新更新