Statistical Program Slicing: a Hybrid Slicing Technique for Analyzing Deployed Software
This addresses the problem of inefficient debugging for software developers by enabling production-level use of slicing with minimal performance impact, though it is incremental as it builds on existing slicing methods.
The paper tackles the high runtime cost of dynamic program slicing by proposing statistical program slicing, a hybrid technique that recovers 94% of dynamic slice statements with only 5% overhead in evaluations on 21 failures from 6 applications.
Dynamic program slicing can significantly reduce the code developers need to inspect by narrowing it down to only a subset of relevant program statements. However, despite an extensive body of research showing its usefulness, dynamic slicing is still short from production-level use due to the high cost of runtime instrumentation. As an alternative, we propose statistical program slicing, a novel hybrid dynamic-static slicing technique that explores the trade-off between accuracy and runtime cost. Our approach relies on modern hardware support for control flow monitoring and a novel, cooperative heap memory tracing mechanism combined with static program analysis for data flow tracking. We evaluate statistical slicing for debugging on 21 failures from 6 widely deployed applications and show it recovers 94% of the program statements on a dynamic slice with only 5% overhead.