bob*_*ert 10 java jvm snapshot clojure locals
有没有办法在不使用调试器的情况下在JVM上获取当前作用域中的局部变量的映射或其他数据结构?也就是说,获取当前堆栈帧的本地?
我知道有堆栈跟踪对象,但StackTraceElement无法访问任何状态.它只是告诉你在哪里调用了哪种方法,而不是它里面的内容.
StackTraceElement
eri*_*son 5
变量名称可以包含在类文件中以帮助调试器,但javac默认情况下不这样做。它需要-g:vars选项。
javac
-g:vars
如果存在,程序可以使用字节码工程库(例如ASM)来访问局部变量名称和作用域。
尽管这个问题措辞不佳,但我认为它是重复的,其答案可能与您的问题有关。我要补充一点,如果您不关心名称,则局部变量类型和范围始终包含在每个方法的属性表中。
归档时间:
16 年,4 月 前
查看次数:
2241 次
最近记录:
14 年,3 月 前