Debugging takes up a significant portion of developer time. As a result, automated debugging techniques including Fault Localization (FL) and Automated Program Repair (APR) have garnered significant attention due to their potential to aid developers in debugging tasks. Despite intensive research on these subjects, we are unaware of a theoretic framework that highlights the principles behind automated debugging and allows abstract analysis of techniques. Such a framework would heighten our understanding of the endeavor and provide a way to formally analyze techniques and approaches. To this end, we first propose a Bayesian framework of understanding automated repair and find that in conjunction with a concrete statement of the objective of automated debugging, we can recover maximal fault localization formulae from prior work, as well as analyze existing APR techniques and their underlying assumptions. As a means of empirically demonstrating our framework, we further propose BAPP, a Bayesian Patch Prioritization technique that incorporates intermediate program values to analyze likely patch locations and repair actions, with its core equations being derived by our Bayesian framework. We find that incorporating program values allows BAPP to identify correct patches more precisely: when applied to the patches generated by kPAR, the rankings produced by BAPP reduce the number of required patch validation by 68% and consequently reduce the repair time by 34 minutes on average. Further, BAPP improves the precision of FL, increasing acc@5 on the studied bugs from 8 to 11. These results highlight the potential of value-cognizant automated debugging techniques, and further validates our theoretical framework. Finally, future directions that the framework suggests are provided.
翻译:调试需要大量开发时间。 因此,自动调试技术,包括失灵本地化(FL)和自动程序修补(APR)等自动调试技术,因其在调试任务方面的潜在帮助开发者的潜力而引起极大关注。 尽管对这些主题进行了大量研究,但我们并不知道一个理论框架,该框架突出自动调试背后的原则,并允许对技术进行抽象分析。 这样一个框架将提高我们对这项工作的理解,并为正式分析技术和方法提供途径。 为此,我们首先提出一个巴伊西亚理解框架,自动修补,并发现与自动调试目标的具体说明一起,我们可以从先前工作中收回最大误差的本地化公式,分析现有的区域调试技术及其基本假设。 作为实验性展示我们框架的一种手段,我们进一步提议BAPPP(BAP(BA(FPL) ) 的精度定值包含中间程序值,以分析可能的补丁点和纠正动作,其核心方程式的精度由我们的巴伊西亚框架(BAP(BA) ) 提供了程序值的精细度框架, 我们发现,使BAPP(BAP) 11 (O(L) 的精度框架) 的精度可以进一步减少准确度的精确度:当应用到BABAPABABAP(BA(BA(BA) 28P) 28P(BA) MA(BA) MA(BA) ) 28P) 的精度的精度(BA) 28P(BA) ) 的精度排序的精度(L) 5) 的精度(L) 的精度(BA(BA(L) ) ) 的精度(BA) ) 的精度(BA(L) ) ) ) ) 的精度(BA(L(L(L) (L) ) ) ) ) (L(BA(BA) (L(L) ) (L) ) ) ) ) (L(BA(L) ) ) ) (BA) (L(L) (BA(L) ) (BA) (B) (L) (L)