Foundations of Dynamic Tracing

September 29, 2009

Juan Cespedes


Foundations of Dynamic Tracing

Time:   11:00am
Location:   Meeting room 302 (Mountain View), level 3

In this talk I will present the first principles of dynamic tracing, in particular tracing of systems programs. Tracing is used for building debuggers, monitors and runtime-verification tools.

I will start by introducing the support that modern processors and operatings offer for tracing, focusing on the facilities exposed by the Linux kernel. Then, I will describe how a dynamic library tracer can be built using this infrastructure. The paramount example is the tool ltrace which I implemented a while ago.

Finally, I will describe the changes required to extend a dynamic library tracer into a runtime-verification infrastructure that handles concurrency (both light and heavy threads, both simulated concurrency and real-multicore multi-processors). Bagheera is a toolkit being developed at IMDEA-Software that implements these extensions and is reprogammable.

Bagheera is joint work with Santiago Romero and Cesar Sanchez.