在遍历堆栈时显示传递的参数值

时间:2013-09-03 15:44:31

标签: java reflection stack-trace

我正在尝试编写Java代码,它将遍历堆栈并不仅打印方法名称/行号,还打印作为参数传递给这些方法的值。我能够获得Thread.getStackTrace()(http://docs.oracle.com/javase/7/docs/api/java/lang/StackTraceElement.html)返回的每个帧的StackTraceElement对象(http://docs.oracle.com/javase/7/docs/api/java/lang/Thread.html#getStackTrace%28%29),但是这个类没有公开我需要的细节。

是否有其他方法可以访问堆栈帧/激活记录,这些记录可以为我提供有关传递给每个方法的详细信息?

1 个答案:

答案 0 :(得分:3)

如果您实施JPDA (debugger API)可能能够执行此操作,但我怀疑您是否愿意这样做。 (除了其他任何方面,性能影响可能很大。)

据我所知,如果没有这种程度的侵入性,你将无法通过反射得到参数值(或特定堆栈框架内的任何其他局部变量值)。

很抱歉答案是否定的,但如果没有AOP或你已经说过你不能使用的东西,那你就不走运了。