Focused Dynamic Slicing for Large Applications using an Abstract Memory-Model
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...
Gespeichert in:
Hauptverfasser: | , , , |
---|---|
Format: | Artikel |
Sprache: | eng |
Schlagworte: | |
Online-Zugang: | Volltext bestellen |
Tags: |
Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
|
Zusammenfassung: | 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\#, \textit{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. |
---|---|
DOI: | 10.48550/arxiv.2211.04560 |