【发布时间】:2011-03-14 19:32:15
【问题描述】:
我目前正在编写一个程序,我想在程序执行期间访问局部变量的变量名并将它们传递给外部。我知道 Java 会在编译期间转储局部变量名称,除非在调试模式下编译。
环顾一番后,似乎 JDI/JPDA 是此类工作的最佳选择。假设ref 指的是ThreadReference,以下是我目前所拥有的:
ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();
两个问题:
- 我是在正确的轨道上,还是有更好的方法来做到这一点?
- 如何获取
ThreadReference以设置为ref? LocatableEvent 似乎是我需要的,但谁能提供一个如何使用它的例子?
非常感谢!
【问题讨论】:
-
为什么,哦,为什么?有什么可能的原因去查询一个正在运行的方法的局部变量names?
-
调试工具 - 我想将变量传递给 Lisp 的 REPL 以便进一步评估/操作。那里更容易,但如果用户传入许多变量,他们将需要指定所有这些变量的名称,或者处理 REPL 中具有不同的变量名称。
-
@souparnomajumder 实际上,我认为那篇文章是这篇文章的副本,因为这篇文章要早得多。答案应该张贴在这里,并且作为副本关闭。
-
@cryptic_star,是的,这篇文章应该是重复的,但接受的答案已经失去了链接。因此合并请求