Using compressed bytecode traces for slicing Java programs
Tao Wang,Abhik Roychoudhury +1 more
- 23 May 2004
- pp 512-521
TL;DR: Results from data compression are used to compactly represent bytecode traces of sequential Java programs and it is shown how dynamic slicing algorithms can directly traverse the authors' compact traces without resorting to costly decompression.
read more
Abstract: 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).
read more
Chat with Paper
AI Agents for this Paper
Find similar papers on Google Scholar, PubMed and Arxiv
Write a critical review of this paper
Analyze citations of this paper to find unaddressed research gaps
Citations
Debugging reinvented: asking and answering why and why not questions about program behavior
Amy J. Ko,Brad A. Myers +1 more
- 10 May 2008
TL;DR: The Whyline is a new kind of debugging tool that enables developers to select a question about program output from a set of why did and why didn't questions derived from the program's code and execution.
316
An Empirical Study of Fault Localization Families and Their Combinations
TL;DR: Results reveal that a combined technique significantly outperforms any individual technique, suggesting that combination may be a desirable way to apply fault localization techniques and that future techniques should also be evaluated in the combined setting.
252
Experimental evaluation of using dynamic slices for fault location
Xiangyu Zhang,Haifeng He,Neelam Gupta,Rajiv Gupta +3 more
- 19 Sep 2005
TL;DR: A dynamic slicing framework is developed that uses dynamic instrumentation to efficiently collect dynamic slices and reduced ordered Binary Decision Diagrams to compactly store them and shows that full slices and relevant slices can considerably reduce the subset of program statements that need to be examined to locate faulty statements.
Locating faulty code by multiple points slicing
TL;DR: A dynamic slicing tool that computes dynamic slices by instrumenting program binaries and executing them to build dynamic dependence graphs is built and it is demonstrated that supporting three different types of dynamic slices has the following advantages.
113
Efficient program execution indexing
Bin Xin,William N. Sumner,Xiangyu Zhang +2 more
- 07 Jun 2008
TL;DR: This paper formally defines the concept of execution index and proposes an indexing scheme based on execution structure and program state, and presents a highly optimized online implementation of the technique.
References
A universal algorithm for sequential data compression
Jacob Ziv,A. Lempel +1 more
TL;DR: The compression ratio achieved by the proposed universal code uniformly approaches the lower bounds on the compression ratios attainable by block-to-variable codes and variable- to-block codes designed to match a completely specified source.
Program Slicing
TL;DR: Program slicing as mentioned in this paper is a method for automatically decomposing programs by analyzing their data flow and control flow. But it is not a technique for finding statement-minimal slices, as it is in general unsolvable, but using data flow analysis is sufficient to find approximate slices.
3.3K
Interprocedural slicing using dependence graphs
TL;DR: A new kind of graph to represent programs is introduced, called a system dependence graph, which extends previous dependence representations to incorporate collections of procedures (with procedure calls) rather than just monolithic programs.
A Survey of Program Slicing Techniques.
Frank Tip
- 31 Jul 1994
TL;DR: An overview of the applications of program slicing, which include debugging, program integration, dataflow testing, and software maintenance is presented, including the various general approaches used to compute slices.
•Journal Article
A survey of program slicing techniques.
TL;DR: A program slice consists of the parts of a program that (potentially) affect the values computed at some point of interest, referred to as a slicing criterion, and is typically specified by a location in the program in combination with a subset of the program's variables.
1.3K