Crate gdb_command
source · [−]Expand description
gdb-command
gdb-command is a library providing API for manipulating gdb in batch mode. It supports:
- Execution of target program (Local type).
- Opening core of target program (Core type).
- Attaching to remote process (Remote type).
Example
use std::process::Command;
use std::thread;
use std::time::Duration;
use gdb_command::*;
fn main () -> error::Result<()> {
// Get stacktrace from running program (stopped at crash)
let result = GdbCommand::new(&ExecType::Local(&["tests/bins/test_abort", "A"])).bt().run()?;
// Get stacktrace from core
let result = GdbCommand::new(
&ExecType::Core {target: "tests/bins/test_canary",
core: "tests/bins/core.test_canary"})
.bt().run()?;
// Get info from remote attach to process
let mut child = Command::new("tests/bins/test_callstack_remote")
.spawn()
.expect("failed to execute child");
thread::sleep(Duration::from_millis(10));
// To run this test: echo 0 | sudo tee /proc/sys/kernel/yama/ptrace_scope
let result = GdbCommand::new(&ExecType::Remote(&child.id().to_string()))
.bt()
.regs()
.disassembly()
.run();
child.kill().unwrap();
Ok(())
}
Modules
A custom GdbCommand error
Structs
FrameDebug struct represents the debug information of one frame in stack trace.
File struct represents unit (segment) in proccess address space.
Struct contains information about arguments for gdb to run.
MappedFiles all mapped files in process.
Struct represents the information about stack trace
StacktraceEntry struct represents the information about one line of the stacktrace.
Enums
Type of gdb execution: Remote attach to process, local run with args, core.
‘ModuleInfo’ enum represents the name of the module or contains information about the module.