/inspector

Builds Data Provenance Graph for Multi-Threaded Programms using tthread and Intel Pt.

Primary LanguageCGNU General Public License v2.0GPL-2.0

Inspector

Builds Data Provenance Graph for Multi-Threaded Programms using tthread and Intel Pt.

For further information can be found here

Paper on Inspector published at ICDCS 2016

TThread

  • TThread is a Tracing Multithreading library
  • TThread is based on dthreads
  • For python api and scripts, see here

Building Tthread

CMake is required to build Tthread:

$ git clone https://github.com/Mic92/tthread.git
$ git submodule update --init
$ cd tthread
$ cmake .
$ make

This will build the Tthread library (libtthread.so).

To build tthread with debugging options use:

cmake -DCMAKE_BUILD_TYPE=DEBUG .

Using Tthread

Tthread currently only supports Linux/x86_64 platforms.

  1. Compile your program to object files (here, we use just one, target.o).

  2. Link to the tthread library. There are three options (neither of which is particular to tthread).

(a) Dynamic linking: this approach requires no environment variables, but the tthread library needs to be in a fixed, known location. Place the tthread library in a directory (TTHREAD_DIR). Then compile your program as follows:

% g++ target.o -rdynamic <TTHREAD_DIR>/libtthread.so -ldl -o target

(b) Ordinary dynamic linking: this approach is more flexible (you can change the location of the tthread library), but you must also set the LD_LIBRARY_PATH environment variable.

% g++ target.o -L<TTHREAD_DIR> -ltthread -dl -o target
% export LD_LIBRARY_PATH=<TTHREAD_DIR>:$LD_LIBRARY_PATH

(c) set LD_PRELOAD to <TTHREAD_DIR>/libtthread.so (Compile program with -rdynamic is also needed in this case)

export LD_PRELOAD=<TTHREAD_DIR>/libtthread.so

To read the access log at runtime, take a look at Usage.md

Run the Tests

cmake -DTESTING=ON .
make test