ROADRUNNER is a dynamic analysis framework designed to facilitate rapid prototyping and experimentation with dynamic analyses for concurrent Java programs. It provides a clean API for communicating an event stream to back-end analyses, where each event describes some operation of interest performed by the target program, such as accessing memory, synchronizing on a lock, forking a new thread, and so on. This API enables the developer to focus on the essential algorithmic issues of the dynamic analysis, rather than on orthogonal infrastructure complexities. Each back-end analysis tool is expressed as a filter over the event stream, allowing easy composition of analyses into tool chains. This tool-chain architecture permits complex analyses to be described and implemented as a sequence of more simple, modular steps, and it facilitates experimentation with different tool compositions. Moreover, the ability to insert various monitoring tools into the tool chain facilitates debugging and performance tuning. Despite ROADRUNNER's flexibility, careful implementation and optimization choices enable ROADRUNNER-based analyses to offer comparable performance to traditional, monolithic analysis prototypes, while being up to an order of magnitude smaller in code size. We have used ROADRUNNER to develop several dozen tools and have successfully applied them to programs as large as the Eclipse programming environment.
RoadRunner REF is a Java instrumentation framework for rapid prototyping of dynamic analysis tools.
The RoadRunner Dynamic Analysis Framework for Concurrent Programs
PASTE '10
Computer Science