Data Ex Machina blog
What are dynamic events?

Dynamic events are the most obvious instantiation of dynamic instrumentation: the ability to place “probes” at arbitrary points in your programs and have the probe generate events (log messages) when they are hit. These events describe the name of the function or the line of code that was hit, and can contain variables and expressions collected at the probed point.

Side-Eye supports two types of probes that produce dynamic events:
– function entry/exit probes
– file:line probes

In addition to the raw events and their captured data, both of these probe types also generate a timeseries tracking the frequency with which the respective probe is hit. The function entry/exit probes also generate a histogram of execution durations for the respective function.

Each event also includes a backtrace, for providing context. Side-Eye displays flame graphs summarizing these backtraces, so you can quickly analyze who’s calling a particular function and how often, for example.

All the events and their captured data are organized in SQLite / DuckDB databases which can be queried using Side-Eye or downloaded locally.

Related articles
A next-generation debugger
Where have all the debuggers gone?
Debugging modern systems is too damn hard
Hello world
You may also be interested

Install the agent

Log into the web app with your corporate e-mail, get your organization's API token, and install the Side-Eye agent on every machine.

App Preview