4 questions to test your understanding
Path explosion in symbolic execution occurs because the number of paths grows exponentially with branches. A simple mitigation is state merging: combine multiple symbolic states that have reached the same program point. What does merging involve?
Directed symbolic execution prioritizes exploration toward a goal (e.g., reaching a specific program point or finding a specific bug). How does this differ from undirected symbolic execution?
Interprocedural symbolic execution reasons about programs with function calls. A naive approach is to inline all called functions, unrolling them completely. Why is this problematic for scalability?
Whole-system symbolic execution (S2E) combines symbolic execution at the application level with OS-level analysis. What does this enable that application-level symbolic execution alone cannot?