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
  • 相关阅读:
    python学习笔记-4-列表和元组
    迭代器 生成器, 可迭代对象以及应用场景
    mysql的创创建用户阶段 开启客户端登录和授权阶段
    初识mysql数据库
    拆目录
    日志编码
    数据库mysql的安装.启动和基础配置------windows版本
    协程
    线程锁 死锁现象 递归锁 信号量 条件定时器 队列 线程池
    网络线程
  • 原文地址:https://www.cnblogs.com/eat-too-much/p/13585222.html
Copyright © 2011-2022 走看看