Automating debugging has been a long standing grand challenge. Central to automated debugging is the capability of identifying failure causal paths, which are paths leading from the root cause to the failure with each step causally connected. It is key to understanding and fixing a software fault. The project develops a novel scalable debugging technique. Given a failure and the desired output, the technique produces the failure causal path.

The following enabling techniques are devised. Given a failure and the desired output, the first technique is to search for a dynamic patch to the failure such that the patched execution generates the desired output. Sample patches include negating the branch outcome of a predicate execution. The second technique is to align the failing and the patched executions to facilitate later comparison. It consists of control flow alignment and memory alignment. Two runs may differ in control flow so that correspondence between execution points need to be established. A data structure may be allocated to different memory locations so that memories also need to be aligned. The third technique is to efficiently compare the program states of the two runs at the aligned places to generate the causal path. The ramifications include reducing resource consumption of debugging and improving software productivity and dependability.

Agency
National Science Foundation (NSF)
Institute
Division of Computer and Communication Foundations (CCF)
Type
Standard Grant (Standard)
Application #
0917007
Program Officer
Sol J. Greenspan
Project Start
Project End
Budget Start
2009-09-01
Budget End
2014-08-31
Support Year
Fiscal Year
2009
Total Cost
$493,298
Indirect Cost
Name
Purdue University
Department
Type
DUNS #
City
West Lafayette
State
IN
Country
United States
Zip Code
47907