Object Aufgabe zugrunde, in JDI und JPDA
Frage
Ganz konkret in JDI und JPDA Kontext, ich habe folgende Fragen:
-
Warum
ObjectReference
aussetzt nicht seine Aufgabe zugrunde? Ist es auf einigen Spezifikation basiert? Debug-Projekt sind alle Implementierungen wie Eclipse die gleichen, die nicht das zugrunde liegende Objekt aussetzen? -
In Anbetracht der Situation, dass Sie die
uniqueID()
vonObjectReference
haben, ist es eine Möglichkeit, die zugrunde liegende Objekt von JVM zu lösen
-
Wenn nicht auf die vorherige Frage, was ist dann der beste Weg ist, um die zugrunde liegende Aufgabe zu lösen? Ich sollte hinzufügen, dass ich bin vertraut mit, wie
Value
die ausStackFrame
Informationen erhalten werden, aber ich wirklich brauchen die Objektreferenz nicht die internen Werte oder die Struktur der Felder.
Lösung
Warum Object nicht seine Aufgabe zugrunde, aussetzen?
Ich gehe davon aus, dass Sie auf die com.sun.jdi.ObjectReference
Schnittstelle beziehen. Wenn ja, es ist eine Kombination von zwei Dingen:
-
Auf dem Gesicht von ihm, wäre es nicht sinnvoll. Die Object ist in der JVM den Debugger ausgeführt wird, aber das entsprechende Java-Objekt existiert auf dem Zielcomputer.
-
Unter der Annahme, dass es einen Sinn hat, dann wäre es eine schlechte Sache sein, die tatsächlichen pbject Adressen und Speicherinhalte zu belichten. Dies ermöglicht es der Debugger Dinge an das Ziel JVM zu tun, die zu harten Abstürzen führen würden.
In Anbetracht der Situation, dass Sie die uniqueID () von Object haben, ist es eine Möglichkeit, die zugrunde liegende Objekt von JVM zu lösen?
Nein.
Wenn nicht auf die vorherige Frage, was ist dann der beste Weg, um das darunter liegende Objekt zu lösen?
AFAIK, gibt es keine Möglichkeit, dies zu tun, abgesehen von Ihrem eigenen Debug-Agenten in C / C ++ zu schreiben mit der JVM Tool Interface und die Konfiguration das Ziel JVM um es auszuführen.