Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes - TEL - Thèses en ligne Accéder directement au contenu
Thèse Année : 2006

Language agnostic source level debugging for general purpose execution platforms

Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes

Résumé

This thesis is devoted to improving symbolic debuggers so that they can deal with the specifics of high-level languages, in particular their complex compilation to general-purpose execution platforms. This has led to the implementation of Bugloo, a language-agnostic debugger for the Java virtual machine.

Two novels virtualization mechanisms are introduced in order to mask artifacts that show up in the stack due to the compilation of high-level languages. The first one is an algorithm that uses special rules designed by language implementors to maintain a mapping between the source code of a program and the code generated during its compilation. It allows the debugger to reconstruct a logical view of the stack into which the compilation details have been filtered out. The second mechanism provides a means to control single stepping, in order to disallow execution to stop in intermediate functions that were generated by the compiler. These virtualization mecanisms have been implemented in a memory profiler for producing special statistics that only contain user-level functions.

During this work, a complete debugging support has been developed for Bigloo, a dialect of the functional language Scheme. Other experiments have been conducted on the high-level languages ECMAScript and Python. Results show that our virtualization mecanisms can be efficiently applied whatever the compilation scheme is. Moreover, they remain effective when programs are composed of several high-level languages.
Cette thèse est consacrée à l'amélioration des débogueurs symboliques pour tenir compte des spécificités des langages de haut niveau, notamment leur compilation délicate vers des plates-formes d'exécution généralistes. Ces travaux ont conduit à la réalisation de Bugloo, un débogueur multi-langages pour la machine virtuelle Java.

Deux nouveaux mécanismes de représentations virtuelles sont proposés pour éliminer les perturbations de débogage dues à la présence sur la pile de fonctions intermédiaires produites par la compilation des langages de haut niveau. Le premier utilise des règles fournies par les implanteurs de langage pour maintenir une correspondance entre le code source d'un programme et le code produit par sa compilation. Cela permet au débogueur de reconstruire une vue logique dans laquelle les détails de compilation ont été expurgés. Le second mécanisme sert à contrôler l'exécution pas-à-pas, afin de ne jamais s'arrêter dans les fonctions intermédiaires engendrées par le compilateur. Ces deux mécanismes ont été adaptés pour réaliser un profileur d'allocation mémoire produisant des statistiques dans lesquelles les fonctions intermédiaires sont masquées.

Durant ces travaux, un support de débogage complet a été développé pour le langage Bigloo, un dialecte du langage fonctionnel Scheme. Des expérimentations similaires ont étés menées sur les langages ECMAScript et Python. Les résultats obtenus montrent que les techniques de représentations virtuelles développées s'appliquent efficacement quel que soit le schéma de compilation adopté, y compris lorsque les programmes sont composés de plusieurs langages de haut niveau.
Fichier principal
Vignette du fichier
these-ciabrini-inria-qualite-impression.pdf (2.36 Mo) Télécharger le fichier
Loading...

Dates et versions

tel-00122789 , version 1 (04-01-2007)

Identifiants

  • HAL Id : tel-00122789 , version 1

Citer

Damien Ciabrini. Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes. Autre [cs.OH]. Université Nice Sophia Antipolis, 2006. Français. ⟨NNT : ⟩. ⟨tel-00122789⟩
147 Consultations
402 Téléchargements

Partager

Gmail Facebook X LinkedIn More