Towards Automated Debugging: A Trace Travelling Oriented and AI-based Approach
Automated debugging, or fault localization, has long been classical research problem. In both industry and academics, programmers usually spend hours (if not days) for investigating their code line by line or step by step, looking for the root cause of the software failure.
One fundamental challenge of automated debugging is the specification/reference missing problem. Conceptually, a software fault is essentially an inconsistent implementation of the program specification. Therefore, if with detailed specification of the program behaviors as reference, the program debugging problem can be naturally transformed into a consistency checking problem. However, in practice, the detailed specification exist nowhere but in programmers’ mind, which makes the automated-debugging extremely hard, if not impossible.
In this talk, I will introduce our trace-travelling debugging framework (a further step based on time-travelling debugging or omniscient debugging), aiming to mitigate the general reference missing problem. Our approach takes as input the execution trace of a buggy program, and transform the program debugging problem into a problem of locating the first buggy step on the trace. Metaphorically, the debugging process can be regarded as a process of travelling on the buggy trace towards the root cause, and we design techniques to expedite the process of such a “travel”. I will first introduce a feedback-based approach to take user feedback on the trace steps. User feedbacks can be considered as partial specification, and guide and speed-up the trace-travelling process towards the root cause. Next, I will introduce a trace-alignment approach to align a buggy trace and its correct version, which facilitate us to automatically generate the user feedbacks on the buggy trace. Finally, I will introduce an AI-based approach to estimate/recommend user feedback on buggy traces without any reference, and further discuss the potential of “autonomous debugging”, i.e., a fully automated walking process on the buggy trace towards the root cause.