previous up next top index
Précédent : Analyse dynamique Remonter : Analyse dynamique Suivant : Filtrage de programmes (slicing)


Génération de traces

Participants : Mireille Ducassé, Jacques Noyé

Une approche possible de l'analyse dynamique est de générer des traces d'exécution de programmes que l'on analyse ensuite avec des outils adaptés.

Les traces d'exécution ne sont pas disponibles directement, il faut des outils pour les générer, que l'on appelle des traceurs. Les techniques d'implantation de ces traceurs restent très insuffisantes. Typiquement, ils introduisent des modifications importantes du compilateur, des structures de données et des schémas d'exécution. Les inconvénients de ce type de traceurs sont de plusieurs ordres : tout d'abord, ils annulent souvent les optimisations qui donnent tout leur intérêt aux compilateurs ; ensuite, les informations données à l'utilisateur sont de trop bas niveau, elles peuvent même être significativement dégradées ; enfin, ces traceurs ne sont absolument pas portables.

Nous étudions actuellement la génération de traces d'exécution pour Prolog par transformation de programmes. Cette technique permet d'éviter les problèmes mentionnés ci-dessus. Il se pose alors la question de l'efficacité. Un premier prototype existe, des mesures montrent que les performances des programmes tracés par transformation de programmes sont équivalentes à celles des programmes tracés par un traceur opérationnel de bas niveau [10].