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机器上,也可以实现虚拟化.通常情况下,监控的主要目的在于:减少宕机 ...
随机推荐
- 一条 SQL 语句在 MySQL 中的执行过程
一条 SQL 语句在 MySQL 中的执行过程 当一条 SQL 语句被提交到 MySQL 时,它会经历多个步骤,包括解析.优化.执行等.以下以 SELECT 语句为例,详细描述整个执行流程. 1. 客 ...
- jmeter:结合while控制器实现性能测试
一.场景 1.导入时,导入操作的用户数比较少,但是单次导入的数据量较大 2.导入文件一共有三步操作,上传-验证-导入,执行完当前操作才可以执行下一步操作. 2.导入时,即使导入数据量较大,导入操作需要 ...
- java中堆污染(heap pollution)以及@SafeVarargs注解使用
什么是堆污染 heap pollution 堆污染发生在使用可变参数(varargs)或泛型时,将不兼容的类型插入到一个泛型对象中.这会导致在运行时尝试访问这些对象时发生 ClassCastExcep ...
- MySql的information_schema.processlist库学习之"如何检测出大数据sql查询"
1.如何通过MySql检测出大数据sql查询 一般数据库都会存在:information_schema数据库 检测出大数据sql查询[time时间越长说明,数据量越大,要根据公司的限度来衡量,我的思路 ...
- 堆叠、MLAG、VPC、VSS 技术对比及架构建议
堆叠.MLAG.VPC.VSS 技术对比及架构建议 1. 堆叠(Stacking) 技术实现: 多台物理设备通过专用堆叠线缆(如华为的Stack.华三IRF.思科StackWise)或普通光纤/以太网 ...
- 第六章: SEO与交互指标
第6章: SEO与交互指标 在当今的SEO环境中,Google越来越重视用户交互指标,如页面停留时长.交互性能等.本章将深入探讨如何优化网页速度和用户交互体验,以提升SEO效果和用户满意度. 1. G ...
- .NET 8 开发的跨平台多商户第三方支付SDK
前言 快速发展的互联网应用开发中,支付功能已成为各类平台不可或缺的一环.为了帮助大家更高效地接入主流支付渠道,推荐一套基于 .NET 开发的第三方支付 SDK.该 SDK 支持跨平台运行,适用于多种操 ...
- FMEA方法,排除架构可用性隐患的利器
极客时间:<从 0 开始学架构>:FMEA方法,排除架构可用性隐患的利器 FMEA 方法,就是保证我们做到全面分析的一个非常简单但是非常有效的方法. 1.FMEA 介绍 FMEA(Fail ...
- 虚拟机搭建CDH6详细过程_三节点为例
准备工作 一.安装虚拟机.centos 1.安装VMwareWorkstation虚拟化软件 首先我们使用VMwareWorkstation来快速的进行虚拟机的新建. 本文使用的版本为VMwareWo ...
- 阅读类元服务开发笔记---week2
.markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...