Publication | Closed Access
Using compressed bytecode traces for slicing Java programs
78
Citations
22
References
2004
Year
EngineeringCompiler TechnologyComputer ArchitectureSoftware EngineeringSoftware AnalysisJava ProgramsDynamic Slicing AlgorithmsParallel ComputingProgram SlicingDynamic CompilationComputer EngineeringDynamic SlicingComputer ScienceData CompressionStatic Program AnalysisProgram AnalysisSoftware TestingFormal MethodsParallel ProgrammingSymbolic ExecutionSystem Software
Dynamic slicing is a well-known program debugging technique. Given a program P and input I, it finds all program statements which directly/indirectly affect the values of some variables' occurrences when P is executed with I. Dynamic slicing algorithms often proceed by traversing the execution trace of P produced by input I (or a dependence graph which captures control/data flow in the execution trace). Consequently, it is important to develop space efficient representations of the execution trace. In this paper, we use results from data compression to compactly represent bytecode traces of sequential Java programs. The major space savings come from the optimized representation of data (instruction) addresses used by memory reference (branch) bytecodes as operands. We give detailed experimental results on the space efficiency and time overheads for our compact trace representation. We then show how dynamic slicing algorithms can directly traverse our compact traces without resorting to costly decompression. We also develop an extension of dynamic slicing which allows us to explain omission errors (i.e. why some events did not happen during program execution).
| Year | Citations | |
|---|---|---|
1977 | 5.4K | |
1984 | 3.2K | |
1990 | 1.5K | |
1990 | 877 | |
1988 | 763 | |
1993 | 646 | |
1999 | 358 | |
2002 | 263 | |
2003 | 192 | |
2000 | 155 |
Page 1
Page 1