Lune

ICSE2023Top-tier venue

Evaluating the Impact of Experimental Assumptions in Automated Fault Localization

Ezekiel O. Soremekun, Lukas Kirschner, Marcel Böhme, Mike Papadakis

2023Year
9Citations
4Top-tier citations

Abstract

Much research on automated program debugging often assumes that bug fix location(s) indicate the faults' root causes and that root causes of faults lie within single code elements (statements). It is also often assumed that the number of statements a developer would need to inspect before finding the first faulty statement reflects debugging effort. Although intuitive, these three assumptions are typically used (55% of experiments in surveyed publications make at least one of these three assumptions) without any consideration of their effects on the debugger's effectiveness and potential impact on developers in practice. To deal with this issue, we perform controlled experimentation, split testing in particular, using 352 bugs from 46 open-source C programs, 19 Automated Fault Localization (AFL) techniques (18 statistical debugging formulas and dynamic slicing), two (2) stateof-the-art automated program repair (APR) techniques (GenProg and Angelix) and 76 professional developers. Our results show that these assumptions conceal the difficulty of debugging. They make AFL techniques appear to be (up to 38%) more effective, and make APR tools appear to be (2X) less effective. We also find that most developers (83%) consider these assumptions to be unsuitable for debuggers and, perhaps worse, that they may inhibit development productivity. The majority (66%) of developers prefer debugging diagnoses without these assumptions twice as much as with the assumptions. Our findings motivate the need to assess debuggers conservatively, i.e., without these assumptions. Table I EXAMPLES OF REAL-WORLD BUGGY PROGRAMS SHOWCASING EACH ASSUMPTION, INCLUDING SAMPLE DIAGNOSES AND QUOTES FROM LITERATURE ILLUSTRATING EACH ASSUMPTION AND THEIR USE IN DEBUGGING LITERATURE AND BUG DATASETS Perfect Bug Understanding (PBU) Using Fixes as Fault Location Single Faulty Location Example Program 1 void add(int * i, char * c) 2 * i = * i + * c; 3 if ( * i >= 256) 4 * i = 0; 5 6 7 int main() 8 ... 9 while (c != '') 10 add(&i, &c); 11 scan_data(&c); 12 13 i = (i % 64) + 32; 14 printf("Check sum is %c", i); 15 ...

Ask about this paper

Your agent reads all of it.

Lune indexed this paper to the last equation, along with the top-tier papers that cite it. Ask a question and the answer quotes them.

Questions to start from

Your agent calls

Luneget_paper_fulltext

Ask in Lune

Free to start. No credit card required.

lune papers fulltext 45eb6aed-1c76-45f1-af72-f361766e80b5

Cited by top-tier papers4

Ask how each one uses it

Builds on3

Related papers

Dusk over the sea between two cliffs drawn in fine vertical lines