ObjectReference базовый объект в JDI и JPDA - PullRequest
3 голосов
/ 12 ноября 2010

В частности, в контексте JDI и JPDA у меня есть следующие вопросы:

  • Почему ObjectReference не раскрывает лежащий в его основе объект?Это основано на какой-то спецификации?Являются ли все реализации, такие как Eclipse Debug Project, одинаковыми, которые не предоставляют базовый объект?

  • Учитывая ситуацию, когда у вас есть uniqueID() из ObjectReference, есть ли способразрешить базовый объект из JVM ?

  • Если нет к предыдущему вопросу, то каков наилучший способ разрешения базового объекта?Я должен добавить, что я знаком с тем, как Value можно получить из StackFrame информации, но мне действительно нужно ссылка на объект , а не внутренние значения или структураполя.

1 Ответ

2 голосов
/ 12 ноября 2010

Почему ObjectReference не предоставляет свой базовый объект?

Я предполагаю, что вы имеете в виду интерфейс com.sun.jdi.ObjectReference.Если это так, то это сочетание двух вещей:

  • На первый взгляд, это не имеет смысла.ObjectReference находится в JVM, в которой выполняется отладчик, но соответствующий целевой объект Java существует на целевом компьютере.

  • Если предположить, что это имеет смысл, тогда было бы плохо выставлятьфактические адреса pbject и содержимое памяти.Это позволило бы отладчику выполнять действия с целевой JVM, которые приводили бы к серьезным сбоям.

Учитывая ситуацию, когда у вас есть uniqueID () из ObjectReference, есть лиспособ разрешения базового объекта из JVM?

Нет.

Если нет на предыдущий вопрос, то каков наилучший способ разрешения базового объекта?

AFAIK, нет никакого способа сделать это, кроме написания вашего собственного агента отладки в C / C ++ с использованием JVM Tool Interface и настройки целевой JVM для его запуска.

...