2010-05-23 6 views
3

J'ai toujours pensé que les varibales sont mappées aux emplacements de pile une fois que votre source Java est compilée; En outre, ils peuvent inclure l'information sur les noms de variables et leur portée dans les classfiles, mais c'est facultatif AFAIK.Comment fonctionne Eclipse/IDEA/etc. débogueur obtenir les informations sur les valeurs variables locales et regarder les valeurs d'expression?

La question est - comment mes IDE Eclipse/IDEA me permettent-ils de définir une expression de surveillance contenant le nom de la variable locale? Pour moi, c'est difficile à comprendre :)

Répondre

3

Tous ces IDE basent leurs services de débogage sur le JavaTM Platform Debugger Architecture (JPDA).
Plus précisément, ils utilisent tous le Java Virtual Machine Tool Interface (JVM TI), qui remplace le JVMPI expérimental (Java Virtual Machine Profiling Interface) de JDK5. Ce JVMTI comprend un Watched Field function et un SetFieldModificationWatch function.

Mais n'inclut pas la variable locale: il existe actuellement un RFE depuis un certain temps: bug 4228507.
Donc dans le cas d'une variable locale, il y a des chances que BCI soit utilisé (Byte Code Instrumentation) (comme le TPTP Eclipse module does).

+0

Les variables locales sont des champs? Vraiment? – Bubba88

+1

@ Bubba88: Je suis d'accord, cela n'inclut pas les variables locales. Je suppose que les agents BCI personnalisés sont associés à la session de débogage pour envelopper ces variables locales dans l'appel de méthode, afin de pouvoir les regarder. J'ai complété ma réponse par quelques références, mais rien de définitif. – VonC

Questions connexes