Computing Atlas

How Computing Was Built
Sign In
Text size
100%
Theme
Algorithm

Symbolic execution

String Algorithm

Symbolic execution is a way of analyzing a program to work out which inputs cause each part of it to run. Instead of reading real input values, an interpreter follows the program with symbolic placeholders standing in for the inputs. It ends up with expressions over those symbols for variables and, for each conditional branch, a constraint that describes when each outcome happens. At a branch the analysis forks into two paths, each carrying its own copy of the program state and its own path constraint. When a path ends, solving its accumulated constraints yields concrete inputs, which can serve as test cases that help developers reproduce bugs. The method reasons path by path rather than input by input, but it struggles with path explosion in large programs, with aliasing of memory, with arrays and with interactions with the environment such as system calls. Tools such as KLEE take the approach of modeling the environment. The concept was introduced academically in the 1970s through systems named Select, EFFIGY, DISSECT and Clarke system.

Connections

In Field

Source Symbolic execution (Wikipedia)
Sources
Symbolic execution (Wikipedia)
  • In Group: Sequence and Code Analysis Algorithms, Lead
    is a means of analyzing a program to determine what inputs cause each part of a program to execute
  • In Field: Software Engineering, Example
    help developers reproduce bugs
View the Source
Comments (0)
No comments yet. Be the first to share a thought.
Reader Challenges (0)
No disputes yet. Spotted an error or a better source? Open the first one.