DynamoRIO / DynamoRIO/dynamorio

binary logging/tracing tool

Open
#1,917 4 comments 0 reactions 0 assignees View on GitHub
Component-DRTool help wanted OpSys-All Type-Feature
Dominant language
C
Stars
3.2k
Forks
629
Avg merge
2d 15h
Merged PRs (30d)
31

Description

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.)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.