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