Outils pour l'aide à la localisation d'erreurs
Cette page web est consacrée à décrire principalement notre outil d'aide à la localisation d'erreurs, LocFaults. Nous allons expliquer aussi d'autres outils qui existent dans l'état de l'art que nous avons étudiés dans nos travaux (comme par exemple BugAssist ou aussi Tarantula).
Notre outil "LocFaults"
Résumé descriptif
Obtenir des informations utiles à la localisation d'erreurs dans un programme erroné est une tâche considérée comme difficile, même pour les programmeurs très expérimentés. L'outil que nous présentons ici, nommé LocFaults, en fournissant uniquement les instructions suspectes pertinantes, aide les utilisateurs dans cette tâche. En partant d'un cas d'erreur, LocFaults explore le CFG du programme en profondeur et collecte les contraintes des instructions pour chaque chemin. Quand un chemin erroné est detecté, l'outil isole les ensembles MCS (Minimal Correction Subset) d'une taille bornée inclus dans le CSP qui correspond au chemin pour identifier la suspicion dans ce dernier. Plus précisément, notre algorithme propage le contre-exemple sur le CFG pour explorer premièrement le chemin du contre-exemple. Ensuite, il entame la recherche des instructions suspectes sur les autres chemins erronés en déviant au plus K branchements par rapport au comportement du contre-exemple. Si le chemin résultant satisfait la postcondition (autrement dit, si la sortie du programme après la déviation avec le contre-exemple ne contredit plus la postcondition) il calcule les MCS sur le chemin qui arrive jusqu'à la dernière condition déviée ; sinon, on ignore le chemin. Pour calculer les MCS, notre outil utilise différents solveurs de contraintes. Actuellement, nous utilisons IBM ILOG MIP et IBM ILOG CP Optimizer de CPLEX.