pai
Process Analyzer and Instrumenter
Recommended way to include the crate, even though API is not expected to be
stable until version 0.2.0, is:
pai = { version = "0.1", features = ["syscalls"] }
The feature syscalls is only needed if you want to resolve the arguments of
system calls. So if you want to resolve the system call number to a name, an
argument to strings, etc.
There are some example of use under examples/ more information will be written when the API is more stable.
Standalone tools using pai
- pai-strace - strace-like tool
- pai-inject-so - inject SO-file into process
Cross-compilation
For information about how cross-compilation of Rust programs work, see Cross-compilation in the rustup book.
Targets tested
x86_64-unknown-linux-gnui686-unknown-linux-gnuaarch64-unkown-linux-gnuaarch64-linux-androidarmv7-unknown-linux-gnueabihf- ARMv7-A Linux, hardfloat (kernel 3.2, glibc 2.17)arm-unknown-linux-gnueabihf- ARMv6 Linux, hardfloat (kernel 3.2, glibc 2.17)
Targets we check build for
These targets are built, but there is no automatic testing for them
arm-unknown-linux-gnueabi- ARMv6 Linux (kernel 3.2, glibc 2.17)x86_64-linux-androidi686-linux-android
Recommended method in Docker
The recommended way to cross-compile is to use cross
Builds will then work as expected, but most test-targets will fail because the
testing method used doesn't support ptrace.
To run cross-architecture tests correctly see testing.md