Directed symbolic execution

View/ Open
Date
2011-04-07Author
Ma, Kin-Keung
Khoo, Yit Phang
Foster, Jeffrey S.
Hicks, Michael
Metadata
Show full item recordAbstract
In this paper, we study the problem of automatically finding program
executions that reach a particular target line. This problem arises in
many debugging scenarios, e.g., a developer might learn that a failure
is possible on a particular line but might not know exactly how to
reproduce the failure or even whether it is reproducible. This can
happen particularly often for bug reports from static analysis tools,
which can produce false positives. We propose two new directed symbolic
execution strategies that aim to solve this problem: shortest-distance
symbolic execution (SDSE) uses a distance metric in an interprocedural
control flow graph to guide symbolic execution toward a particular
target; and call-chain-backward symbolic execution (CCBSE) iteratively
runs forward symbolic execution, starting in the function containing the
target line, and then jumping backward up the call chain until it finds
a feasible path from the start of the program. We also propose Mix-
CCBSE, a strategy in which CCBSE is composed with another search
strategy to yield a hybrid that is more powerful than either strategy
alone. We compare SDSE, CCBSE, and Mix-CCBSE with several existing
strategies from the literature. We find that, while SDSE performs
extremely well in many cases, it sometimes fails badly. However, by
mixing CCBSE with KLEE's search strategy, we obtain a strategy that has
the best overall performance across the strategies we studied.

