binary logging/tracing tool
This issue covers building a new "binary logging tool" which allows a user to insert logging calls into a binary without recompiling it. For example, the user could ask to add printing of the argument and return value every time a target function is called. This aids in faster debugging and program analysis. If the initial features are completed, more advanced features include access to local variables, specifying the logging points and actions via a scripting language, and other proposals.
Printing args/vars on function entry/exit would be the first milestone. There are several directions the project can go in beyond that. One is supporting expressions and complex descriptions of what to print: this can go as far as a little custom language (compare other types of binary tracing/logging tools like DTrace (https://wiki.freebsd.org/DTrace/Tutorial) which have features like counters and histogram summaries). The other is reviving and flushing out DynamoRIO's "probe mode", where it does not use a code cache and instead directly patches app code. For tools that just want to insert code at a few well-defined and safely patchable points such as function entry, probe mode works reasonably well and has much lower startup overhead and slightly lower steady-state overhead than a code cache.
Today drsyms does not give local variable info, so adding local variable logging to this tool would first involve adding scope-based symbol support to drsyms for both DWARF and PDB. (We would much prefer a cross-platform tool, and on Windows there tend to be even more binary-only libraries that are a good target for this tool.)