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

11/08/2022
by   Alexis Soifer, et al.
0

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.

READ FULL TEXT

page 1

page 2

page 3

page 4

research
11/09/2022

Dynamic Slicing by On-demand Re-execution

In this paper, we propose a novel approach that aims to offer an alterna...
research
02/27/2021

Fault Localization with Code Coverage Representation Learning

In this paper, we propose DeepRL4FL, a deep learning fault localization ...
research
11/20/2017

Abstract Interpretation of Binary Code with Memory Accesses using Polyhedra

In this paper we propose a novel methodology for static analysis of bina...
research
12/31/2021

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

Dynamic program slicing can significantly reduce the code developers nee...
research
02/18/2021

Graph based Data Dependence Identifier for Parallelization of Programs

Automatic parallelization improves the performance of serial program by ...
research
01/15/2021

The Role of Working Memory in Program Tracing

Program tracing, or mentally simulating a program on concrete inputs, is...
research
05/13/2020

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