Titre: Aide à l’analyse de traces d’exécution dans le contexte des microcontrôleurs 32 bits
Auteurs: Azzeddine Amiar
Ecole: UNIVERSITÉ DE GRENOBLE
Résumé: Un microcontrôleur est un petit ordinateur qu’on peut trouver dans de nombreux appareils, comme les téléphones mobiles et les machines à laver. En cas de dysfonctionnement, déboguer un microcontrôleur reste une tache difficile à faire. Cette difficulté est liée principalement à l’absence d’un historique du fonctionnement du microcontrôleur. Avant de répondre au besoin de pouvoir faire du débogage, les microcontrôleurs récents permettent d’avoir des traces d’exécution. Un grand nombre de programmes embarqués sur les microcontrôleurs s’appuient sur une boucle principale qui est parcourue indéfiniment, pour par exemple lire les valeurs des capteurs. Par conséquent, à cause de cet aspect cyclique des programmes embarqués, les traces contiennent une quantité importante d’information. De plus, l’absence de données d’entrées et de sorties, ainsi que les optimisations du compilateur rendent l’analyse de ces traces encore plus difficile.
Nos partenaires industriels nous ont demandé de proposer des solutions d’analyse et d’aide au débogage (localisation de faute(s)), qui utilisent une seule trace d’exécution générée à partir d’un programme cyclique. La raison est que d’un microcontrôleur est le plus souvent influencé par l’environnement dans lequel il est installé. Par conséquent, il est très difficile de générer d’autres traces du programme embarqué. Étant donné l’aspect cyclique des programmes de notre travail, une étape importante est l’identification de cycles dans la trace d’exécution. La détection de cycles repose sur l’identification de l’instruction représentant la boucle principale dans le code source. Cette instruction est appelée loop-header. Une fois le loop-header identifié, la trace est divisée en cycles. Cette contribution est présentée dans le chapitre 4.
Extrait du sommaire:
I Introduction 1
II -Partie 1-
La compression de traces basée sur la génération d’une grammaire 11
1 Introduction et Motivation 15
1.1 Préliminaires 17
1.1.1 Notions de bases 17
1.1.2 Grammaire 17
1.2 Contexte d’utilisation de la BGC 18
2 Sequitur 21
2.1 Introduction 21
2.2 Propriétés des grammaires générées par Sequitur 22
2.3 Exemple 23
2.4 Inconvénients des grammaires générées par Sequitur 26
3 Compression de traces d’exécution 27
3.1 Introduction 27
3.2 Préliminaires 28
3.2.1 Notions de base 29
3.2.2 R-Grammaire 30
3.2.3 Exemple 30
3.3 R-Sequitur 31
3.4 Exemple 33
3.5 Compression des traces cyclique avec Cyclitur 35
4 Détection de cycles dans les traces d’exécution 39
4.1 Introduction 39
4.2 Nombre d’occurrences 40
x Table des matières
4.3 Distance entre occurrences 42
4.4 Première occurrence 43
5 Evaluations 47
5.1 Détection de la tête de boucle 47
5.1.1 Métriques de l’évaluation expérimentale 48
5.1.2 Programmes et traces d’exécution 48
5.1.3 Résultats 51
5.2 Compression de la trace 53
5.2.1 Métriques 53
5.2.2 Traces d’exécution de programmes sur microcontrôleurs 54
5.2.3 Compression des traces réseaux 56
6 Conclusion 59
III -Partie 2-
Localisation de faute(s) dans les programmes 63
7 Introduction 67
8 Localisation de faute basée sur les spectres 71
8.1 Spectre d’exécution 72
8.2.1 Union Model 73
8.2.2 Intersection Model 75
8.2.3 Le voisin le plus proche 76
8.3 Méthodes utilisant les scores de suspicion 77
8.3.1 Préliminaires 78
8.3.2 Tarantula 80
8.3.3 Jaccard 81
8.3.4 Ample 82
8.3.5 Ochiai 83
8.3.6 Le c cient Op 84
8.3.7 Algorithme general de la SBFL 85
8.4 Inconvenients de la SBFL 86
9 Localisation de faute en utilisant une seule trace d’execution 89
9.1 Introduction 89
9.2 Exploitation de cycles pour la localisation de faute 90
Table des matieres xi
9.3 Le voisin le plus proche dans une trace 92
9.3.1 Utilisation de la distance de Hamming 92
9.3.2 Application du plus proche voisin 94
9.4 Calcul du score de suspicion en utilisant une seule trace 96
9.4.1 Filtrage 96
9.4.2 Classement de suspects 98
10 Evaluations 101
10.1 Programmes et erreurs 101
10.2 Méthodologie 103
10.3 Résultats 104
11 Conclusion 109
IV -Partie 3-
Fouille de Données pour la Localisation de faute(s) 113
12 Introduction 117
13 Règles d’association 121
13.1 Introduction 121
13.3 Evaluation des règles d’association 122
13.3.1 Support 123
13.3.3 Lift 124
13.4 L’algorithme LCM 124
14 Recherche de règles d’association en utilisant une seule trace d’exécution 127
14.1 Introduction 127
14.2 Groupement des cycles 128
14.3 Fiabilité des règles d’association 129
15 Evaluation 133
15.1 Programmes et erreurs 133
15.2 Résultats 134
16 CoMET 139
xii Table des matières
16.1 Architecture 139
16.2 Fonctionnalités 140
Télécharger le fichier PDF: Aide à l’analyse de traces d’exécution dans le contexte des microcontrôleurs 32 bits