Meaning
Debugging methodology used to identify the subset of program instructions that could have influenced the value of a variable at a specific execution point helps isolate software defects. Backward execution slicing starts from a target statement and works in reverse through the control flow to find all relevant dependencies. The process ends when every path leading to the variable has been mapped to its origin.
Dependency Discovery
Data and control flow dependencies are tracked to build a graph of every instruction that contributed to the current state. Algorithms for backward execution slicing remove any code that does not impact the result at the slicing criterion. This reduction makes it possible to ignore thousands of lines of unrelated code during a post mortem analysis.
Program Reduction
Complex firmware projects often contain millions of instructions that are difficult to manually inspect after a crash. By using a slice, a developer only sees the logic that actually altered the memory location of interest. Reduced code sets allow for faster identification of logic errors.
Fault Isolation
Tracing a corruption event back to a specific pointer assignment is the most common use for this technique. Once the slice is generated, the engineer can see where the incorrect data first entered the system.