<  Retour au portail Polytechnique Montréal

Points de trace rapides et flexibles en X86

Christian Harper-Cyr

Mémoire de maîtrise (2018)

Document en libre accès dans PolyPublie
[img]
Affichage préliminaire
Libre accès au plein texte de ce document
Conditions d'utilisation: Tous droits réservés
Télécharger (601kB)
Afficher le résumé
Cacher le résumé

Résumé

Le traçage est une technique très utile pour les développeurs afin de trouver les problèmes dans les systèmes complexes, et pour analyser l'exécution de ceux-ci. Le traçage permet d'enregistrer les informations de bas niveau d'un système avec un dérangement minimal de celui-ci. Ces informations présentent une vue d'ensemble de l'exécution du système sous test et permettent d'analyser son comportement. Plusieurs outils de traçage permettent à un développeur d'instrumenter un système en y ajoutant des appels d'enregistrement d'information. L'utilisation de ces outils n'est par contre pas toujours possible. En effet, il est nécessaire de recompiler et redéployer le système afin de modifier la définition des points de trace existants et d'en ajouter. Pour pallier à ce problème, des outils de traçage avec instrumentation dynamique peuvent être utilisés. Ceux-ci permettent l'ajout de traçage dans un programme, sans modification des exécutables concernés. Certains outils permettent aussi l'ajout d'instrumentation dans un processus en exécution avec un minimum de dérangement de celui-ci. Ainsi, il est possible pour un développeur d'instrumenter un programme déployé sans déranger l'exécution de celui-ci. La modification dynamique de processus en exécution est un procédé délicat qui demande une modification du code machine sans changement apparent à l'exécution de celui-ci. L'architecture multi-processeur des systèmes modernes pose un problème majeur pour la modification de processus en exécution : l'exécution d'opérations invalides durant la modification du processus. En effet, les fils d'exécution d'un système ne doivent pas être affectés durant la modification du code machine par un des fils. Plusieurs techniques peuvent être utilisées afin de modifier sans danger les programmes multi-fils en exécution.

Abstract

Tracing is a very useful technique used by developers in order to find problems in complex systems, and to analyze the execution of these systems. Tracing is the gathering of low level information about a system, disturbing said system as little as possible. A multitude of tracing tools enable a developer to instrument a system by adding tracepoints. The use of these tools is not always possible, however, since a recompilation and redeployment of the target system is necessary to modify existing tracepoints or add new ones. Indeed, in most cases, it is impossible to modify the tracing instrumentation of a running system. To resolve this problem, tracing tools with dynamic instrumentation can be used instead. These tools enable a user to add and modify the tracepoints of a running system, while affecting as little as possible the execution of this system. The dynamic modification of a running process is a delicate procedure that requires changing the machine code without affecting the execution of the process. The multi-core architecture of modern systems introduces a major hassle when trying to dynamically modify machine code: the execution of invalid instructions during the modification. Indeed, it is important that no thread be affected during the modification of a process. Multiple techniques can be used to safely modify running multi-threaded processes. First of all, stopping all threads of a process is an effective technique to insert a tracepoint into a running process. While a process is stopped, a tool can safely add instructions that branch to tracing code. This ensures that no thread is executing invalid instructions during the insertion. Every thread must be stopped to guarantee the safety of the insertion. It is not always possible to stop every thread in performance sensitive situations.

Département: Département de génie informatique et génie logiciel
Programme: Génie informatique
Directeurs ou directrices: Michel Dagenais
URL de PolyPublie: https://publications.polymtl.ca/3736/
Université/École: École Polytechnique de Montréal
Date du dépôt: 10 mai 2019 14:21
Dernière modification: 07 avr. 2024 10:35
Citer en APA 7: Harper-Cyr, C. (2018). Points de trace rapides et flexibles en X86 [Mémoire de maîtrise, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/3736/

Statistiques

Total des téléchargements à partir de PolyPublie

Téléchargements par année

Provenance des téléchargements

Actions réservées au personnel

Afficher document Afficher document