Author: Christian.Queinnec@lip6.fr

## Introduction

Les outils d'analyse de programmes apportent des informations complémentaires à celles données par le compilateur ou l'édition de liens. Certains de ces outils pratiquent une analyse statique. C'est-à-dire qu'ils examinent le code (sous sa forme d'un texte ou d'un arbre de syntaxe) et en déterminent certaines propriétés comme les dépendances entre modules ou les échappements d'exceptions. D'autres outils pratiquent une analyse dynamique, c'est-à-dire que leur champ d'examen est celui de l'exécution. Ils sont utiles pour connaître par exemple le nombre d'appels aux différentes fonctions, avoir la trace du passage de leurs arguments ou savoir le temps passé dans certaines parties du programme. Ils peuvent aussi être interactifs comme le sont les outils de mise au point d'un programme. Dans ce cas l'exécution du programme est modifiée pour tenir compte de l'interaction utilisateur. Celui-ci peut poser des points d'arrêt dans le but d'explorer des valeurs ou de relancer une exécution sur de nouveaux arguments.
La distribution d'Objective CAML inclut de tels outils. Certains d'entre eux ont des caractéristiques peu communes, souvent liées au typage statique. En effet celui-ci garantit l'absence d'erreur de typage à l'exécution et est utilisé par le compilateur pour produire un code efficace et des données petites. L'information de type des valeurs Objective CAML est en partie perdue dans les valeurs construites. Cela entraîne certaines difficultés comme par exemple l'impossibilité d'afficher les arguments de fonctions polymorphes.