|
| This Article | ||
| ||
| Share | ||
| Bibliographic References | ||
| Add to: | ||
| | ||
| Search | ||
| ||
| ASCII Text | x | ||
| Tankut Akgul, Vincent J. Mooney III, Santosh Pande, "A Fast Assembly Level Reverse Execution Method via Dynamic Slicing," Software Engineering, International Conference on, pp. 522-531, 26th International Conference on Software Engineering (ICSE'04), 2004. | |||
| BibTex | x | ||
| @article{ 10.1109/ICSE.2004.1317474, author = {Tankut Akgul and Vincent J. Mooney III and Santosh Pande}, title = {A Fast Assembly Level Reverse Execution Method via Dynamic Slicing}, journal ={Software Engineering, International Conference on}, volume = {0}, year = {2004}, issn = {0270-5257}, pages = {522-531}, doi = {http://doi.ieeecomputersociety.org/10.1109/ICSE.2004.1317474}, publisher = {IEEE Computer Society}, address = {Los Alamitos, CA, USA}, } | |||
| RefWorks Procite/RefMan/Endnote | x | ||
| TY - CONF JO - Software Engineering, International Conference on TI - A Fast Assembly Level Reverse Execution Method via Dynamic Slicing SN - 0270-5257 SP522 EP531 A1 - Tankut Akgul, A1 - Vincent J. Mooney III, A1 - Santosh Pande, PY - 2004 KW - null VL - 0 JA - Software Engineering, International Conference on ER - | |||
One of the most time consuming parts of debugging is trying to locate a bug. In this context, there are two powerful debugging aids which shorten debug time considerably: reverse execution and dynamic slicing. Reverse execution eliminates the need for repetitive program restarts every time a bug location is missed. Dynamic slicing, on the other hand, isolates code parts that influence an erroneous variable at a program point. In this paper, we present an approach which provides assembly level reverse execution along a dynamic slice. In this way, a programmer not only can find the instructions relevant to a bug, but also can obtain runtime values of variables in a dynamic slice while traversing the slice backwards in execution history.
Reverse execution along a dynamic slice skips recovering unnecessary program state; therefore, it is potentially faster than full-scale reverse execution. The experimental results with four different benchmarks show a wide range of speedups from 1.3X for a small program with few data inputs to six orders of magnitude (1,928,500X) for 400x400 matrix multiply. Furthermore, our technique is very memory efficient. Our benchmark measurements show between 3.4X and 2240X memory overhead reduction as compared to our implementation of the same features using traditional approaches.
