Reproducible dynamic analysis of parallel programs is hard mainly because their behavior changes from run to run. PinPlay is an execution capture and deterministic replay framework that enables reproducible dynamic analysis of x86 programs. PinPlay is based on the popular Pin dynamic instrumentation system and is distributed (for Linux) as an extended Pin kit at http://www.pinplay.org. The PinPlay kit provides a library that Pin tools can link in with small source changes. A PinPlay enabled Pin tool can act either as a recording tool creating a set of files called a ‘pinball’, or as a replaying tool consuming a pinball instead of a live binary. Replay-based analyses are guaranteed to be reproducible. A very useful example of reproducible analysis is replay-based debugging of multi-threaded programs. The pinball for a run of a program with a bug can be replayed with the replayer tool connected to a debugger (GDB). PinPlay guarantees that the same text/data addresses, and the same thread ordering is seen on each replay/debug session making cyclic debugging of multi-threaded programs a lot easier.

The tutorial will provide a detailed description of PinPlay, instructions on writing PinPlay enabled Pin tools, and a demonstration of replay-based debugging with PinPlay. The replay debugging framework will be made available at the PinPlay web-site for anyone to tailor to their debugging needs.

Sun 14 Jun

pldi2015-workshops
09:00 - 11:00: Tutorials - PINPLAY:Using PinPlay for Reproducible Analysis and Replay Debugging at A103-104
pldi2015-workshops09:00 - 11:00
Talk
Link to publication
pldi2015-workshops
11:20 - 12:30: Tutorials - PINPLAY:Using PinPlay for Reproducible Analysis and Replay Debugging at A103-104
pldi2015-workshops11:20 - 12:30
Talk
Link to publication