ObjectReference objet sous-jacent dans JDI et JPDA
Question
Très précisément, dans JDI et JPDA contexte, j'ai les questions suivantes:
-
Pourquoi
ObjectReference
ne pas exposer son objet sous-jacent? Est-il basé sur une spécification? Sont toutes les implémentations comme Eclipse Debug projet même qui ne pas exposer l'objet sous-jacent? -
Compte tenu de la situation que vous avez la
uniqueID()
deObjectReference
, est-il un moyen de résoudre l'objet sous-jacent de JVM ? -
Si non à la question précédente, alors quelle est la meilleure façon de résoudre l'objet sous-jacent? Je dois ajouter que je suis familier avec la façon de
Value
peuvent être obtenus à partir d'informations deStackFrame
, mais je vraiment besoin la référence d'objet non les valeurs internes ou la structure des champs.
La solution
Pourquoi ObjectReference ne pas exposer son objet sous-jacent?
Je suppose que vous faites référence à l'interface com.sun.jdi.ObjectReference
. Si oui, il est une combinaison de deux choses:
-
Sur le visage de celui-ci, il ne serait pas logique. Le ObjectReference est dans la machine virtuelle Java qui exécute le débogueur, mais l'objet Java correspondant existe sur la machine cible.
-
Si l'on suppose qu'il a du sens, alors ce serait une mauvaise chose pour exposer les adresses réelles de pbject et contenu de la mémoire. Cela permettrait au débogueur de faire des choses à la machine virtuelle Java cible qui conduirait à les plantages.
Compte tenu de la situation que vous avez uniqueID () de ObjectReference, est-il un moyen de résoudre l'objet sous-jacent de la machine virtuelle Java?
Non.
Si non à la question précédente, alors quelle est la meilleure façon de résoudre l'objet sous-jacent?
AFAIK, il n'y a aucun moyen de le faire, à part écrire votre propre agent de débogage en C / C ++ en utilisant l'interface JVM outil et la configuration de la machine virtuelle Java cible pour l'exécuter.