Tools for extracting and parsing data in DTrace Object Format (DOF).
dof crate provides types and functions for reading and writing the DTrace Object Format,
an ELF-like serialization format used to store information about DTrace providers and probes in
object files. DOF sections are generated from source code at compile time, and used to
communicate information to the in-kernel portions of DTrace about the providers and probes
defined in the source.
Low-level bindings to the DOF C structures are contained in the
however most client code with interact with the more convenient stuctures defined in the crate
Section type describes a complete DOF section as contained in an object file. It
contains one or more
Providers, each of which contains one or more
Probe describes the names of the related components, such as the function in which it is
called, the provider to which it belongs, and the probe name itself. It also contains
information about the location of the probe callsite in the object file itself. This is used by
DTrace to enable and disable the probe dynamically.
Users of the crate will most likely be interested in deserializing existing DOF data from an
object file. The function [
extract_dof_sections] may be used to pull all sections (and all
providers and probes) from either an ELF or Mach-O object file.
Section::as_bytes methods can be used for ser/des of a
section directly to DOF itself, i.e., ignoring the larger object file format.
Most useful methods and types are exported in the crate root. However, the lower-level Rust
bindings to the raw C-structs are also exposed in the
dof_bindings module, and may be
extracted from a DOF byte slice with the [
Types representing DTrace Object Format data structures.
Auto-generated bindings to the DOF-related types in
Functions to serialize crate types into DOF.