Write a Blog >>
ICSE 2020
Wed 24 June - Thu 16 July 2020

Symbolic execution is a powerful technique for systematically exploring program paths, but scaling symbolic execution to practical programs remains challenging. Though several incremental symbolic execution techniques have been proposed to address the problem by only focusing on program behaviors that are affected by program changes, state-of-the-art techniques still face the challenge to efficiently explore incremental behaviors, especially for highly coupled programs with complex control and data dependency. In this paper, we present \tool, a novel approach for incremental symbolic execution based on an iteration loop between path exploration and path suffixes summarization. On one hand, the explored paths are summarized to enable more precise identification of affected paths; on the other hand, the summary guides path exploration to prune paths that have no incremental behaviors. We implemented the prototype of \tool\ and conducted experiments on a set of real-world applications. The experimental results show that our approach is efficient and effective in exploring incremental behaviors, compared with the state-of-the-art techniques.