Software fault localization involves locating the exact cause of error for a "failing" execution run - a run which exhibits an unexpected behavior. Given such a failing run, fault localization often proceeds by comparing the failing run with a "successful" run, that is, a run which does not exhibit the unexpected behavior. One important issue here is the choice of the successful run for such a comparison. In this paper, we propose a control flow based difference Metric for this purpose. The difference metric takes into account the sequence of statement instances (and not just the set of these instances) executed in the two runs, by locating branch instances with similar contexts but different outcomes in the failing and the successful runs. Given a failing run pi(f) and a pool of successful runs S, we choose the successful run pi(s) from S whose execution trace is closest to pi(f) in terms of the difference metric. A bug report is then generated by returning the difference between pi(f) and pi(s). We conduct detailed experiments to compare our approach with previously proposed difference metrics. In particular, we evaluate our approach in terms of (a) effectiveness of bug report for locating the bug, (b) size of bug report and (c) size of successful run pool required to make a decent choice of successful run.
Mendeley saves you time finding and organizing research
Choose a citation style from the tabs below