Mémoire de maîtrise (2021)
Résumé
Le traçage est un outil puissant utilisé dans le processus de développement d'une application. Ceci est particulièrement utile pour comprendre le comportement des applications qui interagissent en temps réel avec plusieurs composantes externes. En effet, ces applications ne peuvent généralement pas être arrêtées pour inspecter leur état interne à l'aide d'un débogueur interactif. A la place, alors que l'application roule à vitesse normale, une trace de son execution est générée, afin de suivre son chemin d'exécution et enregistrer les valeurs importantes dans la trace. Le programmeur doit premièrement insérer des sondes dans son logiciel. Lorsqu'une sonde est lancée, un évènement est créé et enregistré. Grâce au traçage, le développeur est en mesure d'extraire un grand volume d'information critique à l'optimisation ou au débogage de certains problèmes. Contrairement à la journalisation, le traçage se doit d'avoir le plus petit surcout d'exécution. Par conséquent, différentes optimisations sont effectuées. Dans les applications de haute disponibilité, le développeur doit pouvoir extraire de l'information concernant l'exécution. Idéalement, une sonde est déjà insérée statiquement dans le code source de l'application. Cependant, il peut être difficile de prédire quel problème pourrait survenir en production, l'insertion des sondes doit être plus flexible. Grâce à l'instrumentation dynamique, il sera possible d'insérer de telles sondes en parallèle à l'exécution d'un programme. L'insertion dynamique d'une sonde consiste à modifier certaines parties d'un programme, au niveau des instructions, afin de rediriger le flot d'exécution vers une routine d'instrumentation qui se charge d'enregistrer les données d'intérêts. Cette modification du programme amène beaucoup de problèmes et de défis. Un des problèmes qui limite le taux de succès de l'instrumentation est la difficulté d'extraire le graphe de flot de contrôle d'une fonction, pour déterminer si deux instructions ou plus peuvent être remplacées par une redirection. Dans ce mémoire, nous présentons une technique basée sur la correspondance de patrons afin d'extraire ce graphe. Ce problème a longtemps été étudié dans le domaine de la translation de code ou de la rétro-ingénierie, mais rarement dans le domaine du traçage. Notre technique est en mesure d'extraire avec une grande fiabilité les données nécessaires au graphe de flot de contrôle et d'ainsi augmenter le taux de succès de l'instrumentation dynamique.
Statistiques
Total des téléchargements à partir de PolyPublie
Téléchargements par année
Provenance des téléchargements
