Les membres du jury seront :
— Mr. Philippe Navaux, Professeur à l’Universidade Federal do Rio Grande do Sul, Président
— Mr. Pierre Sens, Professeur à l’Université Pierre et Marie CURIE, Rapporteur
— Mr. Smail Niar, Professeur à l’Université de Valenciennes et du Hainaut Cambrésis, Rapporteur
— Mr. Jean-François Méhaut, Professeur à l’Université Joseph Fourier, Directeur de thèse
— Mme. Vania Marangozova-Martin, Maître de conférences à l’Université Joseph Fourier, Co-Directrice de thèse
— Mr. Miguel Santana, Directeur du centre IDTEC à STMicroelectronics, Co-Directeur de thèse
Les plates-formes MPSoC permettent de satisfaire les contraintes de performance, de flexibilité et de consommation énergétique requises par les systèmes embarqués émergents. Elles intègrent un nombre important de processeurs, de blocs de mémoire et de périphériques, hiérarchiquement organisés par un réseau d’interconnexion. Le développement du logiciel est réputé difficile, notamment à cause de la gestion d’un grand nombre d’entités d’exécution (tâches/threads/processus). L’exécution concurrente de ces entités permet d’exploiter efficacement l’architecture mais complexifie le processus de mise au point et l’analyse des erreurs. D’une part, des exécutions peuvent être non-déterministes, c’est à dire qu’elles peuvent se dérouler d’une manière différente. En conséquence, il n’est pas garanti qu’une erreur se produirait durant la phase de mise au point. D’autre part, la complexité de l’architecture et de l’exécution peut rendre trop important le nombre d’éléments à analyser afin d’identifier une erreur. Il pourrait donc être difficile de se focaliser sur des éléments potentiellement fautifs. Un des défis majeurs du développement logiciel MPSoC est donc de réduire le temps de la mise au point.
Dans cette thèse, nous proposons une méthodologie de mise au point qui aide le développeur à identifier les erreurs dans le logiciel MPSoC. Notre premier objectif est de déboguer une même exécution plusieurs fois afin d’analyser des sources d’erreurs potentielles. Nous avons donc identifié les sources de non-déterminisme MPSoC et proposé des mécanismes de ré-exécution déterministe adaptés. Notre deuxième objectif vise à minimiser les ressources utilisées à reproduire une exécution afin de satisfaire la contrainte MPSoC de maîtrise de l’intrusion. Nous avons donc utilisé des mécanismes efficaces de ré-exécution déterministe et considéré qu’une partie du comportement non-déterministe. Le troisième objectif est de permettre le passage à l’échelle, c’est à dire de déboguer des exécutions caractérisées par un nombre d’éléments de plus en plus croissant. Nous avons donc proposé une méthode qui permet de circonscrire et de déboguer qu’une partie de l’exécution. De plus, cette méthode s’applique aux différents types d’architectures et d’applications MPSoC. Nous montrons la valeur ajoutée de notre méthodologie par le biais de différentes études de cas qui utilisent plusieurs configurations matérielles et logicielles. Mots-clés : Débogage, ré-exécution déterministe, ré-exécution partielle, MPSoC.