I'm currently writing a program in which I would like to access the variable names of local variables during execution of a program and pass them off externally. I'm aware that Java will dump local variable names during compilation unless compiled in debug mode.
After looking around some, it seems that JDI/JPDA is the way to go for this kind of work. Assuming ref
refers to a ThreadReference
, the following is what I have thus far:
ref.suspend();
StackFrame currentFrame = ref.frame(0);
List<LocalVariable> vars = currentFrame.visibleVariables();
ref.resume();
Two questions:
- Am I on the right track, or is there a better way to do this?
- How do I acquire the
ThreadReference
to set toref
? LocatableEvent 开发者_StackOverflow中文版seems to be what I need, but can anyone provide an example on how to use it?
Many thanks in advance!
Not a lot of people have experience with this stuff.
Look elsewhere for an answer. I had links to code but they are no longer. Cannot delete this answer because it was accepted answer.
Yes, you are on the right track!
For anyone who wants to try to get started with the JDI, the "Trace" example is invaluable:
http://www.docjar.com/docs/api/com/sun/tools/example/trace/package-index.html
It's a usable backbone. It shows you how to use events, which indeed will give you a ThreadReference. It also shows you how to start up the second JVM programmatically.
精彩评论