Date: 2014oct9
Update: 2025oct6
Language: Java
Q. Java: Programmatically make a stack trace
A. Here is a function called stacktrace() shown in a full example:
class Demo {
public static void stacktrace() {
for (final StackTraceElement ste : Thread.currentThread().getStackTrace()) {
System.out.println(ste.toString());
}
}
static boolean somethingIsWrong() {
return true;
}
static void function2() {
if (somethingIsWrong()) {
stacktrace();
}
}
static void function1() {
function2();
}
public static final void main(String []args) {
function1();
}
}
Output:
java.base/java.lang.Thread.getStackTrace(Thread.java:2451)
Demo.stacktrace(stack_trace.java:3)
Demo.function2(stack_trace.java:14)
Demo.function1(stack_trace.java:19)
Demo.main(stack_trace.java:23)
java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
java.base/java.lang.reflect.Method.invoke(Method.java:580)
jdk.compiler/com.sun.tools.javac.launcher.Main.execute(Main.java:484)
jdk.compiler/com.sun.tools.javac.launcher.Main.run(Main.java:208)
jdk.compiler/com.sun.tools.javac.launcher.Main.main(Main.java:135)