This crate allows you to spawn a child process with ptrace
enabled. It provides a single trait—CommandPtraceSpawn
—that is implemented for std::process::Command
, giving you access to a spawn_ptrace
method.
Processes spawned this way will be stopped with SIGTRAP
from their exec
, so you can perform any early intervention you require prior to the process running any code and then use PTRACE_CONT
to resume its execution.
use std::io;
use spawn_ptrace::CommandPtraceSpawn;
use std::process::Command;
fn main() -> io::Result<()> {
let child = Command::new("/bin/ls").spawn_ptrace()?;
// call `ptrace(PTRACE_CONT, child.id(), ...)` to continue execution
// do other ptrace things here...
Ok(())
}
For a practical example of this crate's usage, see my tracetree
tool.
This software is provided under the MIT license. See LICENSE.