Доступ Java к локальным именам переменных - PullRequest
4 голосов
/ 12 июля 2010

В настоящее время я пишу программу, в которой я хотел бы получить доступ к именам локальных переменных во время выполнения программы и выдавать их извне.Я знаю, что Java будет выводить имена локальных переменных во время компиляции, если они не скомпилированы в режиме отладки.

После просмотра некоторых из них, кажется, что JDI / JPDA - способ пойти на такую ​​работу.Предполагая, что ref относится к ThreadReference, у меня есть следующее:

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

Два вопроса:

  1. Я на правильном пути илиЕсть ли лучший способ сделать это?
  2. Как получить ThreadReference, чтобы установить ref? LocatableEvent , похоже, то, что мне нужно, но кто-нибудь может привести пример, как его использовать?

Большое спасибо заранее!

Ответы [ 2 ]

1 голос
/ 12 июля 2010

Не многие люди имеют опыт с этим материалом.

Ищите ответ в другом месте.У меня были ссылки на код, но их больше нет.Невозможно удалить этот ответ, поскольку он был принят.

0 голосов
/ 05 июня 2013

Да, вы на правильном пути!

Для тех, кто хочет попробовать начать работу с JDI, пример «Трассировка» неоценим:

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

Это полезный позвоночник.Он показывает вам, как использовать события, которые действительно дадут вам ThreadReference.Также показано, как программно запустить вторую JVM.

...