Instrumentation du code source

Un article de Wikipédia, l'encyclopédie libre.
Ceci est une version archivée de cette page, en date du 11 novembre 2014 à 19:31 et modifiée en dernier par SniperMaské (discuter | contributions). Elle peut contenir des erreurs, des inexactitudes ou des contenus vandalisés non présents dans la version actuelle.

En informatique, l'instrumentation du code source est une opération consistant à ajouter des instructions machine supplémentaires à un programme informatique sans nécessiter la modification du code source original. Elle est apparentée à l'instrumentation dans les sciences, d'où son nom.

Explication

La compilation du code source d'un programme génère un binaire (exécutable, ou code objet) ou bien du bytecode.
L'instrumentation intervient après la compilation pour ajouter des instructions supplémentaires au binaire généré. Elle peut aussi intervenir durant la compilation. Dans ce cas, des instructions sont ajoutées en plus des instructions normalement générées à partir du code source.

Les instructions ajoutées sont alors exécutées avec les autres lors de l'exécution du programme.

Utilisation

Les instructions ajoutées dépendent du but à atteindre par l'instrumentation.

  • Le profilage de code utilise l'instrumentation de code pour enregistrer les fonctions appelées et le temps passé dans chacune d'elles, afin d'identifier les parties de code à optimiser.
  • Le tissage dans la programmation orientée aspect modifie le binaire généré lors de la compilation en ajoutant des capacités supplémentaires au programme.
  • Déterminer la couverture de code utilise l'instrumentation de code pour enregistrer les instructions exécutées et les chemins empruntés lors de l'exécution.
  • Le logiciel Purify détecte les problèmes dans l'utilisation de la mémoire (fuite de mémoire, déréférencement de pointeur NULL, etc.) dans un programme en l'instrumentant et en ajoutant des vérifications à l'exécution.

Voir aussi

  • Apache BCEL, une bibliothèque logicielle permettant de manipuler du bytecode Java pouvant être utilisée pour instrumenter un programme Java.