Traceline is a Windows utility to intercept, time, and log system calls. This
is achieved by injecting code into a target process, along with dynamically
generated assembly hook stubs. One of the major goals was to skew performance
timings as little as possible. This lead to a design in which the log buffer
(which is called the playground) is kept within the process, and the logger
routines use atomic instructions to log their events to this buffer. At the
end of the processes lifetime, this buffer is pulled out of the process and
used to generated JSON output. In addition to hooking system call activity,
other hooks of interest have been written, including heap allocation functions.
Symbols are supported with a command line flag. This works by capturing the
process shutdown, and doing an intrusive symbol attach with dbghelp.dll
NOTES:
- You should copy dbghelp.dll from a windbg installation into this directory.
The version shipped with Windows is old, and symbol support won't work.
- You will need a bit of cygwin if you want to use the Makefile. Otherwise
it is pretty clear how to build the files manually.
- The output JSON data will be printed out stdout. It is likely that you
will want to pipe the output of this program into a file.
Dean McNamee <deanm@chromium.org>