Title :
Efficient Utilization of Secondary Storage for Scalable Dynamic Slicing
Author :
Kargen, Ulf ; Shahmehri, Nahid
Author_Institution :
Dept. of Comput. & Inf. Sci., Linkoping Univ., Linkoping, Sweden
Abstract :
Dynamic program slicing is widely recognized as a powerful aid for e.g. Program comprehension during debugging. However, its widespread use has been impeded in part by scalability issues that occur when constructing the dynamic dependence graph necessary to compute dynamic slices. A few seconds of execution time on a modern CPU can easily yield dynamic dependence graphs on the order of tens of gigabytes in size. Existing methods either produce imprecise slices, incur large time overheads during slice computation, or run out of memory for long program executions. By carefully designing our method to take advantage of locality, we are able to efficiently use secondary storage for dynamic dependence graphs, thus allowing our method to scale to long program executions. Our prototype implementation runs directly on x86 executables, eliminating problems with e.g. Binary-only libraries. We show in our experiments that graphs can be constructed for program runs with billions of executed instructions, at slowdowns ranging from 62x to 173x. Our optimized format also allows graphs to be traversed at speeds of several million dependence edges per second.
Keywords :
graph theory; program slicing; dynamic dependence graph; dynamic program slicing; executed instructions; scalable dynamic slicing; secondary storage utilization; Arrays; Buffer storage; Heuristic algorithms; Layout; Prototypes; Resource management; Scalability; binary analysis; debugging; dynamic dependence graph; dynamic slicing; x86;
Conference_Titel :
Source Code Analysis and Manipulation (SCAM), 2014 IEEE 14th International Working Conference on
Conference_Location :
Victoria, BC
DOI :
10.1109/SCAM.2014.24