In recent years, compositional symbolic execution (CSE)
tools have been growing in prominence and are becoming more and more applicable to real-world codebases.
Still to this day, however, debugging the output of these tools remains difficult, even for specialist users.
To address this, we introduce a debugging interface for symbolic execution tools, integrated with Visual Studio Code and the Gillian multi-language CSE platform, with strong focus on visualisation, interactivity, and intuitive representation of symbolic execution trees.
We take care in making this interface tool-agnostic, easing its transfer to other symbolic analysis tools in future.
We empirically evaluate our work with a user study, the results of which show the debugger's usefulness in helping early researchers understand the principles of CSE and verify fundamental data structure algorithms in Gillian.
Publications
Gillian Debugging: Swinging Through the (Compositional Symbolic Execution) Trees
Symbolic Debugging with Gillian
Software debugging for concrete execution enjoys a mature suite of tools, but
debugging symbolic execution is still in its infancy. It carries unique
challenges, as a single state can lead to multiple branches representing
different sets of conditions, and symbolic states must be 'matched' against
logical conditions. Some of today's otherwise mature symbolic-execution tools
still rely on plain-text log files for debugging, which provide no good overview
of the execution process and can quickly become overwhelming. We introduce a
debugger for Gillian's verification mode—complete with a custom interface—and
ponder the potential for this interface and the protocol behind it to be used
outside of Gillian.