thesis

DeLLIS : débogage de programmes par localisation de fautes avec un système d’information logique

Defense date:

Jan. 1, 2008

Edit

Institution:

Rennes 1

Disciplines:

Authors:

Abstract EN:

When testing a program, some executions can fail. Fault localization gives clues to locate the faults that cause those failures. The first contribution of this thesis is a new data structure for fault localization: a lattice that contains information from execution traces. The lattice is computed thanks to the combination of association rules and formal concept analysis, two data mining techniques. The lattice computes all differences between execution traces and, at the same time, gives a partial ordering on those differences. Unlike existing work, the method takes into account the dependencies between elements of the traces thanks to the lattice. The second contribution of this thesis is an algorithm that traverses the lattice in order to locate several faults in one pass of a test suite of the program. Experiments show that while the method takes into account multiple faults, it is not penalized, compared to existing work, when the program contains only one fault (in terms of number of lines to inspect). In addition, the study of the impact on the method of the dependences between faults shows that in three out of the four identified cases of dependency the faults can be located. The third contribution is an algorithm to compute association rules. The particularity of that algorithm is that it can take into account taxonomies, such as the hierarchy of the abstract syntax tree, without redundancy. It is used to generate association rules to build the lattice for fault localization.

Abstract FR:

La localisation de fautes consiste à donner des indices qui vont mener à la correction des fautes liées à des défaillances. La première contribution de cette thèse est une nouvelle structure de données pour la localisation de fautes: un treillis contenant des informations sur les traces d'exécution. Il est obtenu en combinant la recherche de règles d'association et l'analyse formelle de concepts, deux techniques de fouille de données. Le treillis permet d'ordonner partiellement les informations des traces d'exécution en échec. Ainsi les dépendances entre les éléments des traces sont pris en compte ce que ne font pas les autres méthodes de localisation de fautes. La deuxième contribution est un algorithme de parcours du treillis pour localiser plusieurs fautes en une seule exécution d'une suite de tests du programme. L'approche proposée ne fait aucune supposition a priori sur le nombre de fautes. Les expériences montrent que tout en ayant l'avantage de pouvoir traiter plusieurs fautes à la fois, l'approche n'est pas pénalisée en nombre de lignes à inspecter pour le cas d'un programme contenant une seule faute comparé aux meilleures méthodes localisant une seule faute. Une étude de la méthode en fonction des dépendances entre les fautes démontre que seul un cas, parmi les quatre cas de dépendances identifiés, ne peut être traité. La troisième contribution est un algorithme de recherche de règles d'association. Sa particularité est qu'il permet de traiter des taxonomies, comme la hiérarchie contenue dans l'arbre de syntaxe abstraite, en évitant les redondances. Il est utilisé pour générer les règles d'association dont est issu le treillis pour la localisation de fautes.