Skip to content

SNIA/reanimator-strace

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

reanimator-strace - an strace fork compatible with DataSeries

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.

Dependencies

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

Build Instructions

Automated Build

Requires bash.

  1. 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.

  2. Clone this repository and run build-reanimator-strace.sh. This will place build files in the current directory under BUILD/ and install Lintel, DataSeries, tcmalloc, strace2ds-library, and reanimator-strace under dist/reanimator_strace_release/.

    • The script will install include files and libraries under /usr/local/ if invoked with build-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.

Manual Build

  1. 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.

  2. Install Lintel by running cmake . && make && make install at the root of the Lintel repository.

  3. Install DataSeries by running cmake . && make && make install at the root of the DataSeries repository.

  4. Install tcmalloc from the gperftools repository. See the gperftools INSTALL file for detailed instructions.

  5. Install reanimator-library. See the reanimator-library README.md file for detailed instructions.

  6. In the reanimator-strace repository, run the ./bootstrap script as a wrapper to autotools.

  7. 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 and LDFLAGS environment variables before running configure. For example, if you have installed strace2ds-library in $HOME/lib/strace2ds, you will need to run

    CPPFLAGS="-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 and LDFLAGS, run ../configure --help.

  8. Run make LIBS="-lstrace2ds -lLintel -lDataSeries" CCLD=g++ in the BUILD directory. This will build the modified strace binary and place it in the BUILD directory.

Usage

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.

strace - the linux syscall tracer

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 strace-devel@lists.strace.io. 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.

Build Status Code Coverage