A Fast Assembly Level Reverse Execution Method via Dynamic Slicing

  • Authors:
  • Tankut Akgul;Vincent J. Mooney III;Santosh Pande

  • Affiliations:
  • Georgia Institute of Technology;Georgia Institute of Technology;Georgia Institute of Technology

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

Quantified Score

Hi-index 0.00

Visualization

Abstract

One of the most time consuming parts of debugging istrying to locate a bug. In this context, there are two powerfuldebugging aids which shorten debug time considerably:reverse execution and dynamic slicing. Reverse executioneliminates the need for repetitive program restartsevery time a bug location is missed. Dynamic slicing, onthe other hand, isolates code parts that influence an erroneousvariable at a program point. In this paper, we presentan approach which provides assembly level reverse executionalong a dynamic slice. In this way, a programmer notonly can find the instructions relevant to a bug, but also canobtain runtime values of variables in a dynamic slice whiletraversing the slice backwards in execution history.Reverse execution along a dynamic slice skips recoveringunnecessary program state; therefore, it is potentiallyfaster than full-scale reverse execution. The experimentalresults with four different benchmarks show a wide range ofspeedups from 1.3X for a small program with few data inputsto six orders of magnitude (1,928,500X) for 400x400matrix multiply. Furthermore, our technique is very memoryefficient. Our benchmark measurements show between3.4X and 2240X memory overhead reduction as comparedto our implementation of the same features using traditionalapproaches.