<  Back to the Polytechnique Montréal portal

Points de trace rapides et flexibles en X86

Christian Harper-Cyr

Masters thesis (2018)

[img] Restricted to: Repository staff only until 10 May 2020.
Cite this document: Harper-Cyr, C. (2018). Points de trace rapides et flexibles en X86 (Masters thesis, École Polytechnique de Montréal). Retrieved from https://publications.polymtl.ca/3736/
Show abstract Hide abstract

Abstract

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.

Open Access document in PolyPublie
Department: Département de génie informatique et génie logiciel
Dissertation/thesis director: Michel Dagenais
Date Deposited: 10 May 2019 14:21
Last Modified: 10 May 2019 14:21
PolyPublie URL: https://publications.polymtl.ca/3736/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only