12 unstable releases (4 breaking)

0.5.1 Apr 11, 2023
0.5.0 Mar 2, 2023
0.4.0 Jan 3, 2023
0.3.0 Jan 14, 2022
0.1.0 Dec 21, 2014

#1186 in Rust patterns

Download history 3056/week @ 2024-08-04 3042/week @ 2024-08-11 2201/week @ 2024-08-18 2603/week @ 2024-08-25 2379/week @ 2024-09-01 1936/week @ 2024-09-08 1946/week @ 2024-09-15 2756/week @ 2024-09-22 2576/week @ 2024-09-29 2757/week @ 2024-10-06 3656/week @ 2024-10-13 3693/week @ 2024-10-20 4123/week @ 2024-10-27 4609/week @ 2024-11-03 4516/week @ 2024-11-10 4780/week @ 2024-11-17

18,184 downloads per month
Used in 23 crates (12 directly)

Apache-2.0 OR MIT

15KB
108 lines

probe: Static probes for Rust

probe crate minimum rustc 1.66 probe documentation build status

With the probe! macro, programmers can place static instrumentation points in their code to mark events of interest. These are compiled into platform-specific implementations, e.g. SystemTap SDT on Linux. Probes are designed to have negligible overhead during normal operation, so they can be present in all builds, and only activated using those external tools.

Documentation

Using probe

probe! is available on crates.io. The recommended way to use it is to add a line into your Cargo.toml such as:

[dependencies]
probe = "0.5"

Then use probe::probe; in your code and insert macro calls wherever you want to mark something, probe!(provider, name, args...). The provider and name are identifiers of your choice, and any additional arguments are runtime expressions that will be cast as isize for the probe consumer to read. There is also a probe_lazy! variant that tries to avoid evaluating the argument expressions when probes aren't in use, if the platform-specific implementation allows that to be determined.

License

probe is distributed under the terms of both the MIT license and the Apache License (Version 2.0). See LICENSE-APACHE and LICENSE-MIT for details. Opening a pull request is assumed to signal agreement with these licensing terms.

No runtime deps