Java访问本地变量名称

时间:2010-07-12 13:04:31

标签: java debugging jdi jpda

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

环顾一下之后,似乎JDI / JPDA就是这种工作的方式。假设ref引用ThreadReference,以下是我到目前为止的内容:

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

两个问题:

  1. 我是在正确的轨道上,还是有更好的方法来做到这一点?
  2. 如何获取ThreadReference设置为refLocatableEvent似乎是我需要的,但任何人都可以举例说明如何使用它吗?
  3. 非常感谢提前!

2 个答案:

答案 0 :(得分:1)

很多人都没有这方面的经验。

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

答案 1 :(得分:0)

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

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

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

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