Using ptrace
we are able to run programs deterministically. All system calls are caught
and determinized by our tracer.
This project relies on the libseccomp library. Please install. For hassle free, we recommend installing from your system's standard repository of packages.
Working on any recent Linux system you should be able to make
from this directory.
We use C++17 features not yet implemented in older compilers. It should work with GCC 6.0 or higher. See GCC feature list.
Use the dettrace
executable to run a program deterministically:
./dettrace <your_executable> <your_flags>
For example ls
:
./dettrace ls -ahl
We support the debugging flag --debug N
for N from [1, 5]. Where 5 is the most verbose
output. Notice debugging output is deterministic for levels 1-4, not 5.
We use a whitelist to determinize system calls. Therefore any system call not implemented will throw a runtime exception.
make test
invokes the test runner. Right now [2018.07.13] we are
running our tests through Docker (make test-docker
).