前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。最后打印堆栈调用信息,找到问题点。
具体使用如下:
在需要跟踪的方法中嵌入如下代码(当然AOP是个更好的选择):
Throwable ex = new Throwable();
StackTraceElement[] stackElements = ex.getStackTrace();
if (stackElements != null) {
for (int i = 0; i < stackElements.length; i++) {
System.out.println(stackElements[i].getClassName());//返回类的完全限定名,该类包含由该堆栈跟踪元素所表示的执行点。
System.out.println(stackElements[i].getFileName());//返回源文件名,该文件包含由该堆栈跟踪元素所表示的执行点。
System.out.println(stackElements[i].getLineNumber());//返回源行的行号,该行包含由该堆栈该跟踪元素所表示的执行点。
System.out.println(stackElements[i].getMethodName());//返回方法名,此方法包含由该堆栈跟踪元素所表示的执行点。
System.out.println("-------------第"+i+"级调用-------------------");
}
}
示例结果如下:
Data.java
5
finish
-------------第0级调用-------------------
cn.sccl.Test
Test.java
6
main
-------------第1级调用-------------------
分享到:
相关推荐
子类的对象使用这个方法时,将调用子类中的定义,对它而言,父类中的定义如同被"屏蔽"了。如果在一个类中定义了多个同名的方法,它们或有不同的参数个数或有不同的参数类型,则称为方法的重载(Overloading)。...
当客户机第一次调用一个Stateful Session Bean 时,容器必须立即在服务器中创建一个新的Bean实例,并关联到客户机上,以后此客户机调用Stateful Session Bean 的方法时容器会把调用分派到与此客户机相关联的Bean实例...
当您的应用程序需要各种选项(例如最大堆大小或线程堆栈)并且具有大量的类路径和系统属性都在命令行上定义时,事情很快就会变得复杂和混乱。 javax模块为您提供了人类可读的参数名称和本机数据结构值,以使您可以...
Java内存区域与内存溢出异常 / 24 2.1 概述 / 24 2.2 运行时数据区域 / 25 2.2.1 程序计数器 / 25 2.2.2 Java虚拟机栈 / 26 2.2.3 本地方法栈 / 27 2.2.4 Java堆 / 27 2.2.5 方法区 / 28 2.2.6 运行时常量池...
2.4.3 方法区和运行时常量池溢出 2.4.4 本机直接内存溢出 2.5 本章小结 第3章 垃圾收集器与内存分配策略 3.1 概述 3.2 对象已死吗 3.2.1 引用计数算法 3.2.2 可达性分析算法 3.2.3 再谈引用 3.2.4 生存...
快照从执行快照位置的任何一个实例中捕获调用堆栈和变量。 每当应用程序的任何实例执行日志点位置时,日志点都会将格式化消息写入应用程序日志。 Java 调试器代理目前仅在 Linux 上受支持。 它在 Debian Linux 上...
想到rasp这的类具是基于java、php运行期的堆栈信息进行分析,可以尝试使用jni技术进行绕过。java技术栈中的jni的原理是使用java调用c、c++函数,具体实现的思路是jsp编译为class文件,该class通过jni技术调用另外一...
� 采用了对有限内存、电池和 CPU 优化过的虚拟机 Dalvik , Android 的运行速度比想象的要快很多。 � 运营商(中国移动等)的大力支持,产业链条的热捧。 � 良好的盈利模式( 3/7 开),产业链条的各方:运营商、...
运行态是在 屏幕台前位于当前任务堆栈的顶部,即获取焦点的Activity。暂停信息是指失去了焦点 但对于用户仍可见,此状态下当程序处于低内存是仍有可能被消除。停止状态是指完全 被另一个Activity覆盖,但他仍然保留...
当线程获得了Monitor,进入了临界区之后,如果发现线程继续运行的条件没有满足,它则调用对象(通常是被synchronized的对象)的wait()方法,放弃Monitor,进入 "Wait Set"队列。只有当别的线程在该对象上调用了 ...
4.8 从原生代码中调用Java 108 4.8.1 异步通信 108 4.8.2 启用Directors 109 4.8.3 启用RTTI 109 4.8.4 重写回调方法 109 4.8.5 更新HelloJni Activity 110 4.9 小结 110 第5章 日志、调试及故障处理 111 ...
Neurogami::WiiRemoteJRuby 詹姆斯·布里特 / Neurogami描述: 一组 Ruby 库,可以更好地调用 WiiRemoteJ Java jar。 旨在与 JRuby 一起使用特点/问题: 为底层 Java 类提供了更多 Ruby 风格的 API。概要从 gems....
程序运行过程中如果存在没有try catch的异常,将会交给 Thread.UncaughtExceptionHandler去处理,通过继承该类,并且将默认的异常处理的的类设置为他的一个子类,在子类中对获取的异常信息进行上传到服务器或者做...
集成调试器(要求Oracle 7.3.4或更高)——该调试器提供您所需要的全部特性:跳入(Step In)、跳过(Step Over)、跳出(Step Out)、异常时停止运行、断点、观察和设置变量、观察全部堆栈等。基本能够调试任何...
一组 Ruby 库,可以更好地调用 WiiUseJ Java jar。 旨在与 JRuby 一起使用 特征: 为底层 Java 类提供了更多 Ruby 风格的 API。 概要 从 gems.neurogami.com 安装 gem 在项目的根目录中,运行 wiiusejruby 这将...
我们已经能在Python和C++中顺利运行,同时添加有Lisp、Octave和Java语言库。 测试简单:ROS有一个内建的单元/组合集测试框架,称为“rostest”。这使得集成调试和分解调试很容易。 扩展性:ROS适合于大型实时系统与...
测试人员捕获点异常描写这是测试人员按此顺序抛出的事件: com.example 1-callCaughtPoint的主体com.example 2-尝试...获取异常-并将其重新抛出com.example 10-捕获catchPoint-异常的打印堆栈用法用Eclipse运行
假设您安装了适当的 Java SDK/JRE 和 Eclipse 平台 SDK,并且它们都正常运行。CDT 以两种“方式”可用:稳定的发行版和试运行版(nightly build)。 试运行版未经完全测试,但它们提供了更多的功能并改正了当前错误...