首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

运行时获取步骤调用堆栈信息(java)

2012-12-19 
运行时获取方法调用堆栈信息(java)前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。最后打印

运行时获取方法调用堆栈信息(java)

前几日系统流程回调时,一个方法莫名其妙被调用,无法定位调用点。最后打印堆栈调用信息,找到问题点。

具体使用如下:

?在需要跟踪的方法中嵌入如下代码(当然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级调用-------------------

热点排行