Using Compressed Bytecode Traces for Slicing Java Programs

  • Authors:
  • Tao Wang;Abhik Roychoudhury

  • Affiliations:
  • National University of Singapore;National University of Singapore

  • Venue:
  • Proceedings of the 26th International Conference on Software Engineering
  • Year:
  • 2004

Quantified Score

Hi-index 0.00

Visualization

Abstract

Dynamic slicing is a well-known program debuggingtechnique. Given a program P and input I, it finds all programstatements which directly/indirectly affect the valuesof some variablesý occurrences when P is executed with I.Dynamic slicing algorithms often proceed by traversing theexecution trace of P produced by input I (or a dependencegraph which captures control/data flow in the executiontrace). Consequently, it is important to develop space efficient representations of the execution trace.In this paper, we use results from data compression tocompactly represent bytecode traces of sequential Java programs.The major space savings come from the optimizedrepresentation of data (instruction) addresses used by memoryreference (branch) bytecodes as operands. We give detailedexperimental results on the space efficiency and timeoverheads for our compact trace representation. We thenshow how dynamic slicing algorithms can directly traverseour compact traces without resorting to costly decompression.We also develop an extension of dynamic slicing whichallows us to explain omission errors (i.e. why some eventsdid not happen during program execution).