Efficient Utilization of Secondary Storage for Scalable Dynamic Slicing
2014 (English)In: Proceedings of the 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation / [ed] Randall Bilof, IEEE , 2014, 155-164 p.Conference paper (Refereed)
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.
Place, publisher, year, edition, pages
IEEE , 2014. 155-164 p.
binary analysis, debugging, dynamic dependence graph, dynamic slicing, x86
IdentifiersURN: urn:nbn:se:liu:diva-117289DOI: 10.1109/SCAM.2014.24ISI: 000358876700020ISBN: 978-0-7695-5304-7OAI: oai:DiVA.org:liu-117289DiVA: diva2:807005
14th IEEE International Working Conference on Source Code Analysis and Manipulation, Victoria, British Columbia, Canada, September 28-29, 2014