In this paper, we propose a novel approach that aims to offer an alternative to the prevalent paradigm to dynamic slicing construction. Dynamic slicing requires dynamic data and control dependencies that arise in an execution. During a single execution, memory reference information is recorded and then traversed to extract dependencies. Execute-once approaches and tools are challenged even by executions of moderate size of simple and short programs. We propose to shift practical time complexity from execution size to slice size. In particular, our approach executes the program multiple times while tracking targeted information at each execution. We present a concrete algorithm that follows an on-demand re-execution paradigm that uses a novel concept of frontier dependency to incrementally build a dynamic slice. To focus dependency tracking, the algorithm relies on static analysis. We show results of an evaluation on the SV-COMP benchmark and Antrl4 unit tests that provide evidence that on-demand re-execution can provide performance gains particularly when slice size is small and execution size is large.
翻译:在本文中,我们提出了一种新颖的方法,旨在为动态切片构造的流行范式提供一种替代。动态切片设计需要动态的数据和控制依赖性,这在一次执行中会产生动态的数据和控制依赖性。在一次执行中,记录记忆参考信息,然后为提取依赖性而进行穿行。即使执行简单和短程序执行中尺寸的处决,执行方法和工具也会遇到挑战。我们建议将实际时间复杂性从执行规模转向切片大小。特别是,我们的方法在跟踪每次执行时都多次执行程序,同时跟踪有针对性的信息。我们提出了一个具体的算法,它遵循按需重新执行模式,使用新的边际依赖性概念逐步构建动态切片。为了集中依赖跟踪,算法依靠静态分析。我们展示了SV-COMP基准和Antrl4单元测试的评估结果,这些结果表明,按需再执行可以提供业绩收益,特别是在切片大小和执行规模大的情况下。