reanimator-strace extends strace with support for DataSeries, an efficient, flexible data format for structured serial data. This modification to strace captures maximal information, including all data buffers and arguments. The output of reanimator-strace is designed to be readable by both humans and machines, allowing researchers to use existing DataSeries tools to analyze trace files.
This modification is designed for use with our syscall-replayer, a program able to replay and analyze the system call traces collected in the DataSeries format. For more information on the Re-Animator project, please see our paper Re-Animator: Versatile High-Fidelity Storage-System Tracing and Replaying.
reanimator-strace is under development by Ibrahim Umit Akgun of the File Systems and Storage Lab (FSL) at Stony Brook University under Professor Erez Zadok, with assistance from Professor Geoff Kuenning at Harvey Mudd College.
Currently, only Ubuntu 16 is officially supported.
- Lintel - general utility library for DataSeries
- DataSeries - data format for structured serial data
- reanimator-library - library for outputting traces in DataSeries format
- tcmalloc - high-performance, multi-threaded
malloc()
implementation - libtool
- libboost-dev (v1.58 only)
- libboost-thread-dev (v1.58 only)
- libboost-program-options-dev (v1.58 only)
- build-essential
- libxml2-dev
- zlib1g-dev
Requires bash.
-
Install the following required programs and libraries:
git cmake perl autoconf automake gcc g++ libtool libboost-dev libboost-thread-dev libboost-program-options-dev build-essential libxml2-dev zlib1g-dev
On Ubuntu 16, all the above requirements are available through the APT package manager.
-
Clone this repository and run
build-reanimator-strace.sh
. This will place build files in the current directory underBUILD/
and install Lintel, DataSeries, tcmalloc, strace2ds-library, and reanimator-strace underdist/reanimator_strace_release/
.- The script will install include files and libraries under
/usr/local/
if invoked withbuild-reanimator-strace.sh --install
. If installed this way, the reanimator-strace binary will remain in the build folder so as not to conflict with the strace binary pre-installed on many systems. - You may specify custom build and install directories with the command line options
--build-dir DIR
and--install-dir DIR
. Run./build-reanimator-strace.sh --help
for a full list of options.
- The script will install include files and libraries under
-
Install the following required programs and libraries:
git cmake perl autoconf automake gcc g++ libtool libboost-dev libboost-thread-dev libboost-program-options-dev build-essential libxml2-dev zlib1g-dev
On Ubuntu 16, all the above requirements are available through the APT package manager.
-
Install Lintel by running
cmake . && make && make install
at the root of the Lintel repository. -
Install DataSeries by running
cmake . && make && make install
at the root of the DataSeries repository. -
Install tcmalloc from the gperftools repository. See the gperftools
INSTALL
file for detailed instructions. -
Install reanimator-library. See the reanimator-library
README.md
file for detailed instructions. -
In the reanimator-strace repository, run the
./bootstrap
script as a wrapper to autotools. -
Create a directory named
BUILD
in the repository and navigate to it. Run the command../configure --enable-mpers=check --enable-dataseries
If you have installed the other libraries in a nonstandard directory, you will need to change the
CPPFLAGS
andLDFLAGS
environment variables before runningconfigure
. For example, if you have installed strace2ds-library in$HOME/lib/strace2ds
, you will need to runCPPFLAGS="-I$HOME/lib/strace2ds/include" LDFLAGS="-Xlinker -rpath=$HOME/lib/strace2ds/lib -L$HOME/lib/strace2ds/lib" ../configure --enable-mpers=check --enable-dataseries
For more information on
CPPFLAGS
andLDFLAGS
, run../configure --help
. -
Run
make LIBS="-lstrace2ds -lLintel -lDataSeries" CCLD=g++
in theBUILD
directory. This will build the modified strace binary and place it in theBUILD
directory.
To run the modified strace binary with DataSeries support, navigate to the build directory (or wherever the binary was installed) and run
./strace --dataseries output.ds <program to be traced>
This will write all trace output in DataSeries format to output.ds
. From there, you can read the output in plaintext with ds2txt output.ds
, analyze the trace with any of the tools provided with DataSeries, or replay the trace with syscall-replayer.
Below is the original README file from the strace project.
This is strace -- a diagnostic, debugging and instructional userspace utility with a traditional command-line interface for Linux. It is used to monitor and tamper with interactions between processes and the Linux kernel, which include system calls, signal deliveries, and changes of process state. The operation of strace is made possible by the kernel feature known as ptrace.
strace is released under the terms of the GNU Lesser General Public License version 2.1 or later; see the file COPYING for details. strace test suite is released under the terms of the GNU General Public License version 2 or later; see the file tests/COPYING for details.
See the file NEWS for information on what has changed in recent versions.
Please read the file INSTALL-git for installation instructions.
Please take a look at the guide for new contributors if you want to get involved in strace development.
The user discussion and development of strace take place on the strace mailing list -- everyone is welcome to post bug reports, feature requests, comments and patches to [email protected]. The mailing list archives are available at https://lists.strace.io/pipermail/strace-devel/ and other archival sites.
The GIT repository of strace is available at GitHub and GitLab.
The latest binary strace packages are available in many repositories, including OBS, Fedora rawhide, and Sisyphus.