Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.
Latest commit message
Commit time

Warning: The tool is not production-ready yet. This repository serves to track the progress of research and implementation of the approach.


Program error cause finder for C#

A common way to search for causes of program errors is to manually explore the code or use a debugger. It is often a tedious process, especially if the code base is large and complicated. AskTheCode wants to change that, being a Microsoft Visual Studio extension for C# to enable developers to gather crucial information about the code semantics.

Its main idea is pretty simple - the user selects an assertion in the code and AskTheCode attempts to find any inputs to the program that can break it. The user can then see all the inputs violating the assertion and replay the particular error trace to see how it happened. Due to the high complexity of the problem, it is not guaranteed to find the complete results every time. Nevertheless, even partial information can save the user a lot of time (by not having to manually inspect the call sites that are "safe"). To grasp the basic principles and GUI of the tool, please see the paper from InterAVT 2019.

Usage of AskTheCode inside Microsoft Visual Studio


AskTheCode uses Microsoft Roslyn .NET compiler to analyse C# code and backward symbolic execution as its main code exploration engine. Resulting graphs are displayed using MSAGL. The most comprehensive documentation of the project are the theses and publications below:

Future Plans

A rough overview of the current plans for the future:

  • Convert the (most of the) implementation into F#, simplifying it and enhancing maintainability - see the F# branch.
  • Extend the coverage of supported C# constructs to analyze.
  • Implement various optmizations of the backward symbolic execution techniques - state merging, directed call graph symbolic execution etc.
  • Combine backward symbolic execution with other techniques.


There are currently no official releases, as the usage and integration into Microsoft Visual Studio might still change a lot. Compiling from the sources should work, feel free to contact me ( in case of any problems.


Program error cause finder for C# - research tool







No releases published


No packages published