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

标签 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());
    }
}

最佳答案

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

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

关于java - 打印堆栈跟踪,包括已完成的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210510/

相关文章:

java - keyListener 和线程不工作

java - 在不返回 JSON 字符串的 Android 中使用 HttpPost 进行 POST,返回错误

Android 开发者控制台堆栈跟踪

java - 哪个 java.lang.Error 后代可以安全捕获?

java - 没有选项在 IntelliJ IDEA 中运行 Java 9 项目

c - gcc C ***检测到堆栈粉碎***数组

c - 如何使用 C 代码计算调用图函数的堆栈大小

java - 在可抛出对象中重载 getCause() 方法

java - 正在捕获 Java Throwable 重新启动线程的最佳方法

java - 导入顺序似乎对编译成功很重要?