2010-05-04 7 views
5

c'était une question d'entrevue qui me posait ... J'ai vaguement répondu qu'il utilise des réflexions Java .. mais je n'étais pas sûr. Comment ça marche?Comment le débogueur Eclipse obtient-il les informations sur les variables privées à l'intérieur de la classe?

+0

... et comment met-il en pause l'exécution en mode debug par exemple? Je ne connais pas la réponse, (donc je poste comme commentaire), mais je suppose qu'il a sa propre VM? Ce sera intéressant de voir les réponses. – aioobe

+0

@aioobe la même réponse que la question principale: il utilise le débogueur java qui fait partie du framework java :) – dube

+0

ouais :) Je l'ai compris :) – aioobe

Répondre

9

La clé de votre question est presque certainement java.lang.reflect.AccessibleObject, ce qui permet au débogueur de désactiver les contrôles de contrôle d'accès et fouillez. Spring utilise le même mécanisme pour accéder aux variables d'injection de dépendance.

7

Il utilise la Java Debugger qui fournit des commandes pour le faire que:

jdb print myObj.myInstanceField 

Retour dans les vieux jours, il y a vraiment des gens qui font cela sur une ligne de commande! :)

REMARQUE: Pour afficher les variables locales, la classe conteneur doit avoir été compilée avec l'option javac -g.

Questions connexes