DynC

Dyninst is a powerful instrumentation tool, but specifying instrumentation code (known as an Abstract Syntax Tree) in the BPatch_snippet language can be cumbersome. DynC API answers these concerns, enabling a programmer to easily and quickly build BPatch_snippets using a simple C-like language. Other advantages to specifying BPatch_snippets using dynC include cleaner, more readable mutator code, automatic variable handling, and runtime-compiled snippets. As a motivating example, the following implements a function tracer that notifies the user when entering and exiting functions, and keeps track of the number of times each function is called.

DynC is distributed with Dyninst, and can be downloaded here.