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() de ObjectReference, 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 de StackFrame, mais je vraiment besoin la référence d'objet non les valeurs internes ou la structure des champs.

Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top