我目前正在编写一个程序,我想在程序执行期间访问局部变量的变量名并将它们从外部传递出去。我知道 Java 将在编译期间转储局部变量名称,除非在调试模式下编译。
环顾一番后,似乎 JDI/JPDA 是这种工作的出路。假设ref
指的是 a ThreadReference
,以下是我迄今为止所拥有的:
ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();
两个问题:
- 我在正确的轨道上,还是有更好的方法来做到这一点?
- 如何获取
ThreadReference
to 设置为ref
?LocatableEvent似乎是我需要的,但是任何人都可以提供如何使用它的示例吗?
提前谢谢了!