This library lets Rust programs running inside Valgrind make various requests of Valgrind and its tools. For example:
extern crate vgrs;
use vgrs::valgrind;
fn main() {
unsafe {
assert!(valgrind::count_errors() == 0);
let x: u8 = std::intrinsics::uninit();
println!("{:u}", x);
assert!(valgrind::count_errors() > 0);
}
}
For now this only works on Linux, FreeBSD or MacOS, and only on 32- or 64-bit
x86, but support for other platforms should be easy (see src/arch/
).
There is API documentation online although it's rather sparse. You will
probably want to look at the Valgrind user manual and the C headers in
/usr/include/valgrind
to learn what all these requests do.
This library builds with Cargo. You can run the tests with make check
.