4

我目前正在编写一个程序,我想在程序执行期间访问局部变量的变量名并将它们从外部传递出去。我知道 Java 将在编译期间转储局部变量名称,除非在调试模式下编译。

环顾一番后,似乎 JDI/JPDA 是这种工作的出路。假设ref指的是 a ThreadReference,以下是我迄今为止所拥有的:

ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();

两个问题:

  1. 我在正确的轨道上,还是有更好的方法来做到这一点?
  2. 如何获取ThreadReferenceto 设置为refLocatableEvent似乎是我需要的,但是任何人都可以提供如何使用它的示例吗?

提前谢谢了!

4

2 回答 2

1

没有多少人有这方面的经验。

在别处寻找答案。我有代码链接,但它们不再存在。无法删除此答案,因为它已被接受。

于 2010-07-12T18:15:21.963 回答
0

是的,你在正确的轨道上!

对于任何想尝试开始使用 JDI 的人来说,“Trace”示例非常宝贵:

http://www.docjar.com/docs/api/com/sun/tools/example/trace/package-index.html

这是一个可用的主干。它向您展示了如何使用事件,这确实会给您一个 ThreadReference。它还向您展示了如何以编程方式启动第二个 JVM。

于 2013-06-04T23:42:32.377 回答