Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes / par Damien Ciabrini ; sous la direction de Manuel Serrano

Date :

Editeur / Publisher : [S.l.] : [s.n.] , 2006

Type : Livre / Book

Type : Thèse / Thesis

Langue / Language : français / French

Débogage

Langages de programmation

Systèmes virtuels (informatique)

Scheme (langage de programmation)

Serrano, Manuel (19..-.... ; informaticien) (Directeur de thèse / thesis advisor)

École doctorale Sciences et technologies de l'information et de la communication (Sophia Antipolis, Alpes-Maritimes) (Ecole doctorale associée à la thèse / doctoral school)

Université de Nice (1965-2019) (Organisme de soutenance / degree-grantor)

Université de Nice-Sophia Antipolis. Faculté des sciences (Organisme de soutenance / degree-grantor)

Relation : Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes / par Damien Ciabrini / Villeurbanne : [CCSD] , 2007

Relation : Débogage symbolique multi-langages pour les plates-formes d'exécution généralistes / par Damien Ciabrini ; sous la direction de Manuel Serrano / Grenoble : Atelier national de reproduction des thèses , 2006

Résumé / Abstract : 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.

Résumé / Abstract : 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.