ANaConDA is a framework that simplifies the creation of dynamic analysers for analysing multi-threaded C/C++ programs on the binary level. The framework provides a monitoring layer offering notification about important events, such as thread synchronisation or memory accesses, so that developers of dynamic analysers can focus solely on writing the analysis code. In addition, the framework also supports noise injection techniques to increase the number of interleavings witnessed in testing runs and hence to increase chances to find concurrency-related errors.
ANaConDA suite latest beta (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA suite 0.4 for AQUAS (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA suite 0.2 beta (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA framework 0.1 beta (Sources) (compilation requires libdie and pinlib-die libraries)
ANaConDA suite latest beta (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA suite 0.4 for AQUAS (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA suite 0.2 beta (Sources) (includes framework, libdie and libdie-wrapper libraries, analysers, and tools)
ANaConDA framework 0.1 beta (Windows 64-bit)
To run ANaConDA on Linux, do the following (source release only):
Run tools/build.sh --setup-runtime
This will check if the tools needed to run ANaConDA are available and if not, it will download and install them.
Run tools/build.sh all
This will build the ANaConDA framework with all of its libraries and all analysers.
Run tools/run.sh <analyser> <program>
This will start the analysis of a given program.
To run ANaConDA on Windows, do the following (binary release only):
Run tools/cygwin.bat --quiet
This will start a Cygwin terminal where the scripts for running ANaConDA can be executed. If Cygwin is not found, the script will download it and install it (with all the required packages). If you want to choose where to download and install Cygwin, start the script without --quiet option.
Run tools/build.sh --setup-runtime (in the started Cygwin terminal)
This will check if the tools needed to run ANaConDA are available and if not, it will download and install them.
Run tools/run.sh <analyser> <program> (in the started Cygwin terminal)
This will start the analysis of a given program.
To perform an analysis of a given program, run the following command:
where
The names of analysers can be found in the Repository Layout section under the analysers node (the trailing slash (/) is not part of their name) with a brief description of what the analyser does.
Instead of a path to a program executable, one may register a program under an alias and then use this alias to specify the program to be analysed instead of the path to it. See section Registering a Program for more information.
For example, printing the information about the operations (accesses to memory, lock acquisitions, ...) performed by the 'ls' command with the '-la' parameter can be done using the following command:
A simple program containing a data race. To analyse this program using the AtomRace data race detector (included in the ANaConDA suite), execute the tools/run.sh atomrace <path-to-bank-executable> command.
If you have further questions, do not hesitate to contact author ( Jan Fiedor ).
This work was supported by the Czech Science Foundation (project P103/10/0306), the Czech Ministry of Education (projects COST OC10009 and MSM 0021630528), the EU/Czech IT4Innovations Centre of Excellence project CZ.1.05/1.1.00/02.0070, the internal Brno University of Technology projects FIT-S-11-1 and FIT-S-12-1, and the Artemis JU project 7H13004 HoliDes.
Development of this tool has been supported by AQUAS project (Aggregated Quality Assurance for Systems, https://aquas-project.eu/). This project has received funding from the Electronic Component Systems for European Leadership Joint Undertaking under grant agreement No 737475. This Joint Undertaking receives support from the European Union's Horizon 2020 research and innovation programme and Spain, France, United Kingdom, Austria, Italy, Czech Republic, Germany.
This tool as well as the information provided on this web page reflects only the author's view and ECSEL JU is not responsible for any use that may be made of the information it contains.