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

par Damien Ciabrini

Thèse de doctorat en Informatique

Sous la direction de Manuel Serrano.


  • Résumé

    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 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 les quelles 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é 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.

  • Titre traduit

    Language-agnostic source level debugging for general purpose execution platforms


  • 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 artefacts 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 implementers 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 mechanisms 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 mechanisms can be efficiently applied whatever the compilation scheme is. Moreover, they remain effective when programs are composed of several high-level languages.

Consulter en bibliothèque

La version de soutenance existe sous forme papier

Informations

  • Détails : 1 vol. (x-179 p.)
  • Notes : Publication autorisée par le jury
  • Annexes : Bibliogr. p. 171-179. Résumés en français et en anglais

Où se trouve cette thèse ?

  • Bibliothèque : Université Nice Sophia Antipolis. Service commun de la documentation. Section Sciences.
  • Non disponible pour le PEB
  • Cote : 06NICE4032
Voir dans le Sudoc, catalogue collectif des bibliothèques de l'enseignement supérieur et de la recherche.