kirancodes.me
To Proof Maintenance & Beyond!

Slicer4J: a dynamic slicer for Java

Khaled Ahmed, Mieszko Lis, Julia Rubin

Abstract

Dynamic program slicing is used in a variety of tasks, including program debugging and security analysis. Despite being extensively studied in the literature, the only dynamic slicing solution for Java programs that is publicly available today is a tool named JavaSlicer. Unfortunately, JavaSlicer only supports programs written in Java 6 or below and does not support multithreading. To address these limitations, this paper contributes a new dynamic slicing tool for Java, named Slicer4J. Slicer4J uses low-overhead instrumentation to collect a runtime execution trace; it then constructs a thread-aware, inter-procedural dynamic control-flow graph and uses the graph to compute the slice. To support slicing through Java framework methods and native code, Slicer4J relies on a set of pre-constructed data-flow summaries of the main framework methods. It also allows the users to further customize this set, adding user-defined methods when needed. We demonstrate the applicability of Slicer4J on ten benchmark and open-source Java programs, comparing it with JavaSlicer, and discuss how to use and extend the tool.

BibTeX
@inproceedings{Ahmed-al:FSE21,
  author    = {Khaled Ahmed and
               Mieszko Lis and
               Julia Rubin},
  title     = {{Slicer4J:} a dynamic slicer for Java},
  booktitle = {{ESEC/SIGSOFT} {FSE}},
  pages     = {1570--1574},
  publisher = {{ACM}},
  year      = {2021},
}

Related papers