Dyninst Tools

The following tools have been build using dyninst. If you have built a tool using dyninst and would like it listed here, please send email to feedback@dyninst.org.

Active Projects

VampirTrace is an open source library that allows detailed logging of program execution for parallel applications using message passing (MPI) and threads (OpenMP, Pthreads). Besides these typical parallelization paradigms, VampirTrace is capable of tracing GPU accelerated applications and generates exact time stamps for all GPU related events.

Open|SpeedShop provides a wide variety of experiments to help users identify and remove performance obstacles, pinpoint system resource usage, and detect memory leaks. Open|SpeedShop for Linux OS-based computing systems running on a wide range of computing platforms will be made available to the open-source community to accelerate independent use and development. It will feature core SpeedShop components such as support for single system image and cluster configurations, exclusive and inclusive user time sampling, program counter sampling, MPI call tracing, input/output tracing, floating point exception tracing, and CPU hardware performance counter experiments. The new version's modular design will also enable users to extend the tool's functionality by adding their own performance experiments to monitor application performance.

TAU (Tuning and Analysis Utilities) is a visual programming and performance analysis environment for parallel C++ and HPF. TAU is implemented in C and C++ and uses Tcl/Tk for graphics. The TAU tools are implemented as graphical hypertools. While they are distinct tools, they act in concert as if they were a single application. TAU is part of the HPC++ project.

The COnfigurable Binary Instrumenter (COBI) from the Scalasca project is built on top of Dyninst's binary rewriting engine. COBI provides an easy configuration-file based interface for a wide range of common binary instrumentation tasks.

The Extrae instrumenter, used by the Paraver performance tool and the Dimemas simulator from the Barcelona Supercomputer Center, uses Dyninst as a binary instrumentation engine.

The Stack Trace Analysis Tool (STAT) is a debugging tool for large scale applications that aggregates stack traces from massively parallel programs into a small number of representative call stacks. STAT is based on several components from the Dyninst group: StackwalkerAPI, ProcControlAPI, SymtabAPI, and MRNet.

codeCoverage is a Dyninst-based code coverage tool that provides both function and basic block level output. It uses the Dyninst binary rewriter, which allows code coverage instrumentation to be inserted once and used across different input sets.

unstrip is a library fingerprinting tool for stripped binaries. It identifies GNU C Library wrapper functions in an stripped input binary and outputs a new binary with meaningful names assigned to these functions. Other functions are located and labeled with targXXXXXX names (where XXXXXX is the address of the function entry point in hex). unstrip includes a "learning" mode to add new fingerprints to the database.

Historic Interest

Dynamic Probe Class Library (DPCL) is an object based C++ class library that provides the necessary infrastructure to allow tool developers and sophisticated tool users to build parallel and serial tools through technology called dynamic instrumentation.

DPCL takes the basic components needed by tool developers and encapsulates them into C++ classes. Each of these classes provide the member functions necessary to interact and dynamically instrument a running application with software patches called probes. Dynamic instrumentation provides the flexibility for tools to insert probes into applications as the application is running and only where it is needed.

Dynaprof is a dynamic instrumentation and performance analysis tool that uses DynInst and DPCL.

OCM: OMIS Compliant Monitoring system
This project provides a reference implementation of an OMIS compliant monitoring system. Version 1.2 was released in 2003.

Stride - Stream Identification During Execution
Stride is a tool to dynamically instrument load/stores in binary to obtain information about memory usage patterns in the data reference stream of an application. It employs an online algorithm to detect linear memory access patterns. Instrumentation can be selectively applied and disabled during execution. At the conclusion of the run, detailed function-level stream statistics are calculated.

Tool Gear is a software infrastructure for developing performance analysis and debugging tools for large scale parallel programs.

Many types of tools have similar needs for data collection features and user interfaces. For example, many tools display source code and either annotate it with data or allow the user to click on parts of the source display to initiate an action or display more detailed information. Tool Gear handles much of the source code and data display, allowing tool developers to focus on the unique aspects of their codes. Tool Gear can work with the Dynamic Probe Class Library (DPCL) to collect data from instrumentation installed at runtime in programs, or it can receive data sent to it from other sources.