Valgrind: a framework for heavyweight dynamic binary instrumentation
Automatic logging of operating system effects to guide application-level architecture simulation