DIOTA (Dynamic Instrumentation, Optimisation and Transformation of Applications) is dynamic binary instrumentation framework. The underlying techniques correctly deal with programs that contain traditionally hard to instrument features such as data in code and code in data. The technique does not require reverse engineering, program understanding tools or heuristics about the compiler or linker used. The basic idea is that instrumented code is generated on the fly, while the original process is used for data accesses.
DIOTA comes with a number of useful backends to check programs for faulty memory accesses, data races, deadlocks,... and perform basic tracing operations, e.g. tracing all memory accesses, all code being executed, to perform coverage analysis, ...
We recommend you to get the latest version straight from the svn repository, as it contains many bugfixes compared to the latest release (which is still available for download from this website for historical purposes). It requires a Linux/x86 system (either 32 bit, or with 32 bit libraries available) with GCC 3.x or 4.x, preferably with a 2.6 kernel. The documentation is included in OpenOffice.org and pdf formats.
To download it, use the following svn command:
svn co --username anon --password anon https://acavus.elis.ugent.be/svn/diota/trunk diota