#valgrind #callgrind #api-bindings #helgrind #cachegrind #massif

crabgrind

Rust 对 "Valgrind 客户端请求" 接口的绑定

3 个版本

使用旧的 Rust 2015

0.1.11 2024 年 7 月 20 日
0.1.10 2023 年 11 月 1 日
0.1.9 2023 年 3 月 26 日
0.1.8 2022 年 12 月 14 日

#46 in 性能分析

Download history 30/week @ 2024-04-16 30/week @ 2024-04-23 30/week @ 2024-04-30 23/week @ 2024-05-07 29/week @ 2024-05-14 119/week @ 2024-05-21 239/week @ 2024-05-28 527/week @ 2024-06-04 2125/week @ 2024-06-11 2157/week @ 2024-06-18 1989/week @ 2024-06-25 1823/week @ 2024-07-02 2064/week @ 2024-07-09 2227/week @ 2024-07-16 2139/week @ 2024-07-23 2143/week @ 2024-07-30

8,879 每月下载量
3 个 Crates 中使用 (2 个直接使用)

MIT 许可证

60KB
720

crabgrind

Valgrind 客户端请求 接口,适用于 Rust 程序

crates.io libs.rs documentation license

crabgrind 是一个小型库,它允许 Rust 程序访问 Valgrind 的工具和虚拟化环境。

Valgrind 提供了一个 "客户端请求接口",该接口可以通过其头文件中的 C 宏访问。然而,这些宏不能在缺少 C 预处理器支持的幸运语言中使用,例如 Rust。为了解决这个问题,crabgrind 将这些宏包装在 C 函数中,并通过 FFI 提供此 API。

本质上,crabgrind 作为一个薄包装。它添加了一些类型转换和结构,但所有真正的事情都是由 Valgrind 本身完成的。

快速入门

crabgrind 不与 Valgrind 链接,而是读取其头文件,这些文件在构建过程中必须是可访问的。

如果你使用操作系统特定的包管理器安装了 Valgrind,头文件的路径很可能会自动由 cc 解决。

如果手动安装,你可以通过 DEP_VALGRIND 环境变量设置 Valgrind 头文件位置的路径。例如

DEP_VALGRIND=/usr/include cargo build

接下来,在 Cargo.toml 中添加依赖项

[dependencies]
crabgrind = "0.1"

然后,使用一些 Valgrind 的 API

use crabgrind as cg;

fn main() {
    if matches!(cg::run_mode(), cg::RunMode::Native) {
        println!("run me under Valgrind");
    } else {
        cg::println!("Hey, Valgrind!");
    }
}

并在 Valgrind 下运行

cargo build
valgrind ./target/debug/appname

最后,为了获取更多详细信息和方法示例,请务必查看 文档

许可证

crabgrindMIT 许可证下分发。

Valgrind 本身是 GPL2,但是 valgrind/*.h 头文件在 BSD 风格的许可证下分发,因此我们可以使用它们而不用担心许可证冲突。

没有运行时依赖

~200KB