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, ...
The current version is 0.91 and is available for Linux/x86 systems (GCC 3 is required to compile at this time), along with a manual in PDF format. We recommend you to download the latest version from svn however, as it contains many bug fixes (including compatibility with GCC 4). You can check it out using/
svn co --username anon --password anon https://acavus.elis.ugent.be/svn/diota/trunk diota
After checking out the sources using svn, you have to run "autoconf" once in the created diota directory, after which a regular "./configure ; make" will compile everything as described in the manual.