UProbe

Struct UProbe 

Source
pub struct UProbe(/* private fields */);
Expand description

User-space probe event.

Uprobes allow you to dynamically insert tracepoints within user-space processes. This allows you to gather metrics on how many times a function is called (e.g. malloc) or attach eBPF programs to run when the tracepoint is triggered.

There are two types of kprobes:

  • uprobes trigger when the relevant function is called (or, potentially, executed at an offset within that function).
  • uretprobes trigger just before the relevant function returns.

To create a uprobe you will need to provide both a path to a binary and the offset within that binary at which you want to insert the probe. Discovering the offset that corresponds to a given function is up to you.

Implementations§

Source§

impl UProbe

Source

pub fn new(retprobe: bool, path: CString, offset: u64) -> Result<Self>

Create a new uprobe from a path string and offset.

§Errors

This will attempt to read the kprobe PMU type from /sys/bus/event_source. It will return an error if the uprobe PMU is not available or the filesystem exposed by the kernel there is otherwise unparseable.

Source

pub fn probe(path: impl AsRef<Path>, offset: u64) -> Result<Self>

Create a new uprobe from a path and an offset within that file.

§Errors

This will attempt to read the kprobe PMU type from /sys/bus/event_source. It will return an error if the uprobe PMU is not available or the filesystem exposed by the kernel there is otherwise unparseable.

Source

pub fn retprobe(path: impl AsRef<Path>, offset: u64) -> Result<Self>

Create a new uretprobe from a path and an offset within that file.

§Errors

This will attempt to read the kprobe PMU type from /sys/bus/event_source. It will return an error if the uprobe PMU is not available or the filesystem exposed by the kernel there is otherwise unparseable.

Trait Implementations§

Source§

impl Clone for UProbe

Source§

fn clone(&self) -> UProbe

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for UProbe

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more

Auto Trait Implementations§

§

impl Freeze for UProbe

§

impl RefUnwindSafe for UProbe

§

impl Send for UProbe

§

impl Sync for UProbe

§

impl Unpin for UProbe

§

impl UnwindSafe for UProbe

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> EventData for T
where T: Send + Sync,