Home‎ > ‎


Detailed Pin!
Binary Instrumentation Engine
Call for Participation!
ISCA 2013, Pin Tutorial
June 2013
Tel-Aviv, Israel

About Pin

Pin is a dynamic instrumentation system provided by Intel (http://www.pintool.org), which allows C/C++/assembly introspection code to be injected at arbitrary places in a running executable. The injected introspection code is referred to as a Pin tool and is used to observe the behavior of the program. Pin tools can be written to perform various functionalities including application profiling, memory leak detection, security, trace generators for the IA-32 and Intel64 platforms, running on Windows, Linux, OSX or Android. Pin provides a rich API that abstracts away the underlying instruction set idiosyncrasies and allows context information such as register contents to be passed to the injected code as parameters. Pin automatically saves and restores registers that are overwritten by the injected code so the application continues to execute normally. Pin makes it easy to do studies on complex real-life applications, which makes it a useful tool not only for research, but also for education. Pin has been downloaded tens of thousands times, has been cited in over 700 publications, and has about 1000 registered mailing list users.

Tutorial Objective

The tutorial targets researchers, students, and educators alike, and provides a detailed look at Pin, both how to use Pin and how Pin works. Participants will obtain a good understanding of the Pin API. The tutorial is comprised of four learning components. The first component provides insight into the workings of Pin, and introduces its fundamental instrumentation structures and concepts thru example Pin tools. The second component will present methods and considerations for writing optimal Pintools. The third component introduces useful Pin-based tools that are freely available for download, in particular we will look in detail at the memtrace and membuffer tools, which implement the instrumentation basis for algorithms which need to examine memory accesses. The fourth component will present some of the more advanced Pin APIs, such as signal/exception interception, multi-threaded pin tools, Pin interface to debuggers.

Tutorial Schedule

Overall 3 hours

Part One: Overview, Key Concepts (60 min)

Part Two: Various topics in Pin API (30 min)

Part Three: Performance, or how to optimize your pintools (30 min)

Part Four: Advanced Pin Usage and APIs (60 min)

Presenters Bio

Michal Nir Gross is a Software Engineer at Intel and has been working in the Pin project for the last 2 years. Prior to joining the Pin project she worked on Intel's threading analysis tool for .NET.

Benjamin Kemper is a Software Engineer at Intel and has been working in the Pin project for the last 2 years. Benjamin works on enabling pin on Unix platforms.

Michal Nir,
Jun 25, 2013, 11:27 PM