19.06.2014 Views

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

Rim Chaabane. Analyse dynamique de ... - Université Paris 8

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Analyse</strong> <strong>dynamique</strong> <strong>de</strong> programmes C<br />

Chapitre 7 - Comparaison avec l existant<br />

Il existe à l heure actuelle <strong>de</strong> nombreuses recherches portant sur le domaine <strong>de</strong> l analyse<br />

<strong>dynamique</strong> <strong>de</strong> programme. Certains travaux <strong>de</strong> recherche ont même permis <strong>de</strong> développer <strong>de</strong>s<br />

outils dont les résultats sont encourageants quant aux objectifs <strong>de</strong> ces recherches. Je vais<br />

présenter dans ce chapitre, quelques projets traitant <strong>de</strong> l analyse <strong>dynamique</strong> <strong>de</strong> programmes et<br />

apportant une solution pour visualiser les dépendances entre données extraites.<br />

Dans le domaine <strong>de</strong> la recherche, nous pouvons citer les travaux <strong>de</strong> Systä sur l analyse <strong>dynamique</strong><br />

<strong>de</strong> programmes objets (Java) [SYS 01]. Le concept <strong>de</strong> dépendances <strong>dynamique</strong>s fû introduit par<br />

Korel et Laski [KOR 88] dans le contexte du slicing <strong>dynamique</strong>, qui consiste à connaitre les<br />

valeurs <strong>de</strong>s variables dont la valeur dépend directement d une variable donnée. Le concept <strong>de</strong><br />

graphes <strong>de</strong> dépendances <strong>dynamique</strong>s a été introduit par Agrawal et Horgan [AGR 90] qui se base<br />

sur <strong>de</strong>s algorithmes pour calculer les slices <strong>dynamique</strong>s. Ces algorithmes utilisent un historique <strong>de</strong><br />

l exécution pour extraire les informations sur les slices concernés. Ces techniques sont<br />

essentiellement intégrées dans <strong>de</strong>s programmes tels que les débuggeurs, qui permettent d obtenir<br />

les valeurs <strong>de</strong>s variables pendant l exécution du programme ; ces valeurs sont visualisables <strong>de</strong><br />

façon textuelle et non graphique. Du fait <strong>de</strong> l importante masse <strong>de</strong> données générée par ces<br />

techniques, <strong>de</strong>s étu<strong>de</strong>s se sont orientées pour trouvers <strong>de</strong>s solutions <strong>de</strong> compactages <strong>de</strong>s données.<br />

Notre projet, intègre le calcul <strong>dynamique</strong> et la représentation graphique <strong>de</strong>s dépendances <strong>de</strong><br />

données. Il permet <strong>de</strong> tracer non seulement les dépendances d une variable mais l ensemble <strong>de</strong>s<br />

interactions <strong>de</strong>s données manipulées par le programme.<br />

Dans le reste du chapitre, nous présentons en section 7.1 l outil Call graph d ai<strong>de</strong> à la<br />

maintenance <strong>de</strong> programmes C. Le <strong>de</strong>uxième outil, Zeugma, que nous présentons en section 7.2,<br />

propose une approche originale <strong>de</strong> représentation <strong>de</strong>s données. Et le <strong>de</strong>rnier outil, Care, que nous<br />

présentons dans la section 7.3, représente la solution la plus proche <strong>de</strong> notre outil.<br />

7.1. Call graph Drawing interface<br />

L outil Call Graph Drawing Interface [ENG 03] est une solution permettant d afficher le graphe<br />

<strong>de</strong> dépendances <strong>de</strong>s appels <strong>de</strong> fonctions pour <strong>de</strong>s co<strong>de</strong>s sources C et C++ sous Unix. Le<br />

graphique <strong>de</strong>s dépendances <strong>de</strong>s appels est généré pendant l exécution du co<strong>de</strong> source par le<br />

compilateur avec les options p et g <strong>de</strong> GCC. Il utilise ainsi l outil <strong>de</strong> profiling <strong>de</strong> programmes<br />

Gprof [FEN 97], pour extraire les données <strong>dynamique</strong>s du co<strong>de</strong> source et l outil VCG [SAN 95]<br />

pour afficher ces dépendances graphiquement.<br />

Nous pouvons voir ci-<strong>de</strong>ssous un exemple d affichage <strong>de</strong>s dépendances <strong>dynamique</strong>s <strong>de</strong>s<br />

interactions entre les fonctions d un programme C++ donné également dans cette figure.<br />

70

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!