Software debugging with dynamic instrumentation and test-based knowledge

Hsin Pan, Purdue University

Abstract

Developing effective debugging strategies to guarantee the reliability of software is important. By analyzing the debugging process used by experienced programmers, we have found that four distinct tasks are consistently performed: (1) determining statements involved in program failures, (2) selecting suspicious statements that might contain faults, (3) making hypotheses about suspicious faults (variables and locations), and (4) restoring program state to a specific statement for verification. This dissertation focuses on the second task, reducing the search domain for faults, referred to as fault localization. A new approach to enhancing the process of fault localization is explored based on dynamic program slicing and mutation-based testing. In this new scenario, a set of heuristics was developed to enable debuggers to highlight suspicious statements and thus to confine the search domain to a small region. A prototype debugging tool, SPYDER, was previously constructed to support the first task by using dynamic program slicing and the fourth task by backward execution; some of the heuristics were integrated into SPYDER to demonstrate our approach. An experiment confirms the effectiveness and feasibility of the proposed heuristics. Furthermore, a decision algorithm was constructed as a map to convey the idea of applying those heuristics. A new debugging paradigm equipped with our proposed fault localization strategies is expected to reduce human interaction time significantly and aid in the debugging of complex software.

Degree

Ph.D.

Advisors

Spafford, Purdue University.

Subject Area

Computer science

Off-Campus Purdue Users:
To access this dissertation, please log in to our
proxy server
.

Share

COinS