Crate gdb_command[][src]

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 proccess.

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.