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
java 打印程序堆栈中的信息的更多相关文章
- C/C++程序开发中实现信息隐藏的三种类型
不管是模块化设计,还是面向对象设计.还是分层设计,实现子系统内部信息的对外隐藏都是最关键的内在要求.以本人浅显的经验,把信息隐藏依照程度的不同分成(1)不可见不可用(2)可见不可用(3)可见可用. 1 ...
- java实验程序基础中的问题总结 java图形化界面
一,课程中的问题 1,知道程序实现的大体框架,但是不能具体到每一个细节,这需要平时的积累. 2,在不同文件夹中定义的类之间有没有联系,类与类之间可以通过接口相互联系. 3,如何在一个对话框中显示文本, ...
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
public interface Sing { public static final String eyecolor="black"; public void sleep(); ...
- Java应用程序实现屏幕的"拍照"
有时候,在Java应用程序开发中,如:远程监控或远程教学,常常需要对计算机的屏幕进行截取,由于屏幕截取是比较接近操作系统的操作,在Windows操作系统下,该操作几乎成了VC.VB等的专利,事实上,使 ...
- java: 关于从jar中读取资源遇到的问题getClass().getResource(...)
在Java的程序发布中,很多人会选择采用二进制的jar的格式进行发布,怎么样读取Jar里面的资源呢?主要是采用ClassLoader的下面几个方法来实现:public URL getResource( ...
- JAVA基础-输入输出:1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上。
1.编写TextRw.java的Java应用程序,程序完成的功能是:首先向TextRw.txt中写入自己的学号和姓名,读取TextRw.txt中信息并将其显示在屏幕上. package Test03; ...
- JAVA 在程序中存储和修改信息
1.语句和表达式 计算机程序是一组告诉计算机什么的指令,每一个指令称为语句. 2.指定变量类型 变量名.变量存储的信息类型 整型int(-2.14*109~2.14*109).浮点型float(38位 ...
- 在 NetBeans IDE 6.0 中分析 Java 应用程序性能
NetBeans IDE 6.0 包含一个强大的性能分析工具,可提供与应用程序运行时行为有关的重要信息.通过 NetBeans 性能分析工具,我们可以方便地在 IDE 中监控应用程序的线程状态.CPU ...
- 在 Java 应用程序中使用 Elasticsearch
如果您使用过 Apache Lucene 或 Apache Solr,就会知道它们的使用体验非常有趣.尤其在您需要扩展基于 Lucene 或 Solr 的解决方案时,您就会了解 Elasticsear ...
- 在Docker中监控Java应用程序的5个方法
译者注:Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化.通常情况下,监控的主要目的在于:减少宕机 ...
随机推荐
- Streamlit快速入门指南
theme: orange Streamlit是一个Python库,允许您创建交互式的数据科学和机器学习Web应用程序. Streamlit介绍 Streamlit是一个Python库,允许您创建交互 ...
- 太喜欢啦,浏览器中的SQL神器:WhatTheDuck让CSV分析像聊天一样简单!
嗨,大家好,我是小华同学,关注我们获得"最新.最全.最优质"开源项目和高效工作学习方法 基于DuckDB的轻量级Web应用 | 完全浏览器端运行 | 零数据泄露风险 | 支持复杂S ...
- Spring基于注解的CRUD
目录 Spring基于注解的CRUD 代码实现 测试 方式一:使用Junit方式测试 方式二:使用@RunWith(SpringJUnit4ClassRunner.class)注解测试 Spring基 ...
- Spring--IOC注解用法初探
创建一个UserDao接口,和一个UserDaoImp的实现类 UserDao接口 package com.zjw.spring.demo1; public interface UserDao { p ...
- numpy.ndarray.transpose用法理解
numpy.ndarray.transpose方法对于高维数组来讲,略微有点不太好理解.下面给出我自己对该方法的理解. 对于一个高维数组,transpose((i,j,k))可以这样理解:选取原数组的 ...
- Varlet UI-Material Design风格Vue 3框架移动端组件库
Varlet UI是什么 在现代Web开发中,Vue 3以其强大的组件系统特性,成为了构建可复用.模块化应用界面的首选框架.而在Vue 3的生态系统中,Varlet UI开源组件库以其高效.一致和可维 ...
- 阅读类元服务开发笔记---week1
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...
- ODOO路由里面的auth="user" 的使用
一.controller介绍:Controller层在odoo里面可以认为是控制器,根据url地址来控制后端的业务和前端的内容展示,我们一般偏向于叫路由控制, 它相当于内网和外网之间的防火墙,外网的请 ...
- odoo14、15里tree上加button【系统原生功能】
odoo14.15里面tree视图已经添加了跟form一样的header标签,后面列表写button可以由此处扩展 系统案例:注意:按钮要选择数据后才出现 代码如下: <tree string= ...
- 「Note」数论方向 - 组合数学
1. 容斥原理 1.1 介绍 解决集合内计数问题. \(S\) 为集合编号集合. \[\left | \bigcup_{i\in S}A_i \right | =\sum_{T\subseteq S\ ...