zoukankan      html  css  js  c++  java
  • java 打印程序堆栈中的信息

    简介

    作为程序奔溃调试的手段核心操作就是查看程序的堆栈。

    code

    package cn;
    
    import java.util.Scanner;
    
    public class StackTraceTest {
    	public static int factorial(int n){
    		System.out.println("factorial(" + n +"):");
    		Throwable t = new Throwable();
    		StackTraceElement[] frames = t.getStackTrace();
    		for (StackTraceElement f : frames){
    			System.out.println(f);
    		}
    		int r;
    		if(n <= 1) r = 1;
    		else r = n * factorial(n - 1);
    		System.out.println("return" + r);
    		return r;
    	}
    	public static void main(String[] args){
    		Scanner in = new Scanner(System.in);
    		System.out.print("Enter n:");
    		int n = in.nextInt();
    		factorial(n);
    	}
    }
    
    

    result

    Enter n:5
    factorial(5):
    cn.StackTraceTest.factorial(StackTraceTest.java:8)
    cn.StackTraceTest.main(StackTraceTest.java:23)
    factorial(4):
    cn.StackTraceTest.factorial(StackTraceTest.java:8)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.main(StackTraceTest.java:23)
    factorial(3):
    cn.StackTraceTest.factorial(StackTraceTest.java:8)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.main(StackTraceTest.java:23)
    factorial(2):
    cn.StackTraceTest.factorial(StackTraceTest.java:8)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.main(StackTraceTest.java:23)
    factorial(1):
    cn.StackTraceTest.factorial(StackTraceTest.java:8)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.factorial(StackTraceTest.java:15)
    cn.StackTraceTest.main(StackTraceTest.java:23)
    return1
    return2
    return6
    return24
    return120
    
    Hope is a good thing,maybe the best of things,and no good thing ever dies.----------- Andy Dufresne
  • 相关阅读:
    java中变量、对象的存储
    悬停小组件-反馈和返回顶部
    setTimeout、setInternal传递带参数的函数
    jquery绑定事件时如何传递参数
    jQuery判断复选框checkbox是否选中
    bootstrap模态框垂直居中显示
    【转】Spring事务的隔离级别
    第一天 纪念下下
    羊车门
    关于Python课程的一些思考。
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/13585222.html
Copyright © 2011-2022 走看看