Automated Debugging: Are We Close?
Abstract:
Despite increased automation in software engineering, debugging hasn’t changed much. A new algorithm promises to relieve programmers of the hit-or-miss approach to isolating a failure’s external root cause. 2 Computer For the past 50 years, software engineers have enjoyed tremendous productivity increases as more and more tasks have become automated. Unfortunately, debugging—the process of identifying and correcting a failure’s root cause—seems to be the exception, remaining as labor-intensive and painful as it was five decades ago. An engineer or programmer still has to notice something, wonder why it happens, set up hypotheses, and then attempt to confirm or refute them. In theory, there is no reason to continue this legacy. Debugging can be just as disciplined, systematic, and quantifiable as any other area of software engineering—which means that we should eventually be able to automate at least part of it. So far, research has concentrated on program analysis because of its roots in compiler construction. But analysis requires complete knowledge about the program being examined and does not scale well to large programs. Testing is another way to gather knowledge about a program because it helps weed out the circumstances that aren’t relevant to a particular failure. If testing reveals that only three of 25 user actions are relevant, for example, you can focus your search for the failure’s root cause on the program parts associated with these three actions. If you can automate the search process, so much the better. This is the premise of Delta Debugging, an algorithm that uses the results of automated testing to systematically narrow the set of failure-inducing circumstances. 1 Programmers supply a test function for each bug and hardcode it into any imperative language. The test function checks a set of changes to determine if the failure is present or if the outcome is unresolved and feeds that information to the Delta Debugging code. Programmers can either hardcode the algorithm, available from the Delta Debugging Web site
Citations
| 908 | Program slicing – Weiser - 1984 |
| 71 | Isolating cause-effect chains from computer programs – Zeller - 2002 |
| 13 | Simplifying failure-inducing input – Hildebrandt, Zeller |
| 12 | my program worked. Today, it does not – Zeller, “Yesterday - 1999 |
| 4 | A Survey of Program Slicing – Tip - 1995 |
| 1 | Simplifying and Isolating Failure-Inducing Input,” http://www.st.cs.uni-sb.de/dd – Zeller |

