Focused Dynamic Slicing for Large Applications using an Abstract Memory-Model

by   Alexis Soifer, et al.

Dynamic slicing techniques compute program dependencies to find all statements that affect the value of a variable at a program point for a specific execution. Despite their many potential uses, applicability is limited by the fact that they typically cannot scale beyond small-sized applications. We believe that at the heart of this limitation is the use of memory references to identify data-dependencies. Particularly, working with memory references hinders distinct treatment of the code-to-be-sliced (e.g., classes the user has an interest in) from the rest of the code (including libraries and frameworks). The ability to perform a coarser-grained analysis for the code that is not under focus may provide performance gains and could become one avenue toward scalability. In this paper, we propose a novel approach that completely replaces memory reference registering and processing with a memory analysis model that works with program symbols (i.e., terms). In fact, this approach enables the alternative of not instrumenting – thus, not generating any trace – for code that is not part of the code-to-be-sliced. We report on an implementation of an abstract dynamic slicer for C#, DynAbs, and an evaluation that shows how large and relevant parts of Roslyn and Powershell – two of the largest and modern C# applications that can be found in GitHub – can be sliced for their test cases assertions in at most a few minutes. We also show how reducing the code-to-be-sliced focus can bring important speedups with marginal relative precision loss.


page 1

page 2

page 3

page 4


Dynamic Slicing by On-demand Re-execution

In this paper, we propose a novel approach that aims to offer an alterna...

Fault Localization with Code Coverage Representation Learning

In this paper, we propose DeepRL4FL, a deep learning fault localization ...

Abstract Interpretation of Binary Code with Memory Accesses using Polyhedra

In this paper we propose a novel methodology for static analysis of bina...

Statistical Program Slicing: a Hybrid Slicing Technique for Analyzing Deployed Software

Dynamic program slicing can significantly reduce the code developers nee...

Graph based Data Dependence Identifier for Parallelization of Programs

Automatic parallelization improves the performance of serial program by ...

The Role of Working Memory in Program Tracing

Program tracing, or mentally simulating a program on concrete inputs, is...

Semantic prefetching using forecast slices

Modern prefetchers identify memory access patterns in order to predict f...

Please sign up or login with your details

Forgot password? Click here to reset