© 2007—2012 - Renaud Blanch
Ce document présente l'outils introspact qui permet d'explorer, à l'exécution, une hiérarchie d'agents PAC.
Introspact est un outil qui permet d'explorer une hiérarchie d'agents PAC pendant leur vie. Il permet d'observer leur état et de visualiser les appels de méthodes entre agents.
L'agent PV = nRT suivant :
% source ./TP1/6-switch.tcl % Formule formule
Introspact
définie dans introspact.tcl
:
% source introspact.tcl % Introspact introspact formule
On peut obtenir des informations sur chaque agent en cliquant dessus, par exemple en cliquant sur l'agent racine formule
:
La première section de cet fenêtre présente les attributs de l'instance en montrant leurs noms et leurs valeurs (ces dernières étant mises à jour dynamiquement quand la fenêtre est ouverte).
La seconde section donne l'ensemble des méthodes de l'instance, en les groupant par la classe d'où elles proviennent.
Les paramètres de ces méthodes sont rappelés en gris.
Enfin, la section delay permet d'activer (case à cocher) et de paramétrer (index à déplacer) une temporisation qui permet de ralentir l'animation montrant les appels de méthodes.
Cette temporisation vaut pour l'objet et ses descendants dans l'arbre d'agents PAC.
Si un descendant définit aussi une temporisation, cette dernière remplace celle de son ancêtre.
En cliquant sur le nom des méthodes des agents, une nouvelle fenêtre affichant le code de cette méthode s'ouvre.
Par exemple, si on clique sur contructor
, on obtient :
Ce code est éditable : si on le modifie, fermer la fenêtre en cliquant sur eval modifie la méthode pour toutes les instances de la classe modifiée (déjà existantes ou à venir). Si on clique sur close, les changements ne sont pas appliqués.
Lorsqu'une méthode est appelée sur un agent, les appels sont matérialisés sur l'arbre des agents de la fenêtre principale en rendant ainsi visible toute la pile des appels :
Si la case pause n'est pas cochée, les appels s'enchaînent (avec les temporisations choisies). Si elle est cochée, les appels sont bloqués, et le bouton avec la flèche permet d'avancer pas à pas dans l'exécution.
Un object Introspact
peut être “détaché” ou “attaché” dynamiquement :
% introspact detach % introspact attach formule % introspact attach introspactLa première ligne détache l'introspacteur de la formule, la second le rattache. La dernière ligne l'attache à lui-même. Introspact étant programmé en PAC, il peut en effet s'observer lui-même sans problème particulier.
mise à jour : 11 octobre 2012