3 个版本
使用旧的 Rust 2015
| 0.1.11 | 2024 年 7 月 20 日 |
|---|---|
| 0.1.10 | 2023 年 11 月 1 日 |
| 0.1.9 | 2023 年 3 月 26 日 |
| 0.1.8 |
|
#46 in 性能分析
8,879 每月下载量
在 3 个 Crates 中使用 (2 个直接使用)
60KB
720 行
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
最后,为了获取更多详细信息和方法示例,请务必查看 文档。
许可证
crabgrind 在 MIT 许可证下分发。
Valgrind 本身是 GPL2,但是 valgrind/*.h 头文件在 BSD 风格的许可证下分发,因此我们可以使用它们而不用担心许可证冲突。
没有运行时依赖
~200KB