<  Back to the Polytechnique Montréal portal

Points de trace rapides et flexibles en X86

Christian Harper-Cyr

Master's thesis (2018)

Open Access document in PolyPublie
[img]
Preview
Open Access to the full text of this document
Terms of Use: All rights reserved
Download (601kB)
Show abstract
Hide abstract

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.

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.

Department: Department of Computer Engineering and Software Engineering
Program: Génie informatique
Academic/Research Directors: Michel Dagenais
PolyPublie URL: https://publications.polymtl.ca/3736/
Institution: École Polytechnique de Montréal
Date Deposited: 10 May 2019 14:21
Last Modified: 19 Apr 2023 17:04
Cite in APA 7: Harper-Cyr, C. (2018). Points de trace rapides et flexibles en X86 [Master's thesis, École Polytechnique de Montréal]. PolyPublie. https://publications.polymtl.ca/3736/

Statistics

Total downloads

Downloads per month in the last year

Origin of downloads

Repository Staff Only

View Item View Item