20个发布版本

0.7.8 2024年3月10日
0.7.6 2023年9月1日
0.7.4 2023年3月27日
0.7.1 2022年12月22日
0.2.0 2021年5月10日

#278 in 调试

Download history 1342/week @ 2024-03-13 950/week @ 2024-03-20 550/week @ 2024-03-27 1045/week @ 2024-04-03 766/week @ 2024-04-10 491/week @ 2024-04-17 797/week @ 2024-04-24 652/week @ 2024-05-01 513/week @ 2024-05-08 1616/week @ 2024-05-15 958/week @ 2024-05-22 971/week @ 2024-05-29 659/week @ 2024-06-05 900/week @ 2024-06-12 662/week @ 2024-06-19 435/week @ 2024-06-26

2,840 每月下载量
用于 3 个代码包 (2个直接)

MIT 协议

35KB
596

gdb-command

CI Crates.io Documentation

gdb-command 是一个库,提供批量模式操作gdb的API。它支持

  • 执行目标程序(本地类型)。
  • 打开目标程序的核心(核心类型)。
  • 连接到远程进程(远程类型)。

示例

use std::process::Command;
use std::thread;
use std::time::Duration;
use gdb_command::*;

fn main () -> error::Result<()> {
    // Get stack trace from running program (stopped at crash)
    let result = GdbCommand::new(&ExecType::Local(&["tests/bins/test_abort", "A"])).r().bt().launch()?;

    // Get stack trace from core
    let result = GdbCommand::new(
            &ExecType::Core {target: "tests/bins/test_canary",
                core: "tests/bins/core.test_canary"})
        .bt().launch()?;

    // 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()
        .launch();
    child.kill().unwrap();

    Ok(())
}

安装

[dependencies]
gdb-command = "0.7.8"

许可证

此代码包遵循 MIT许可证

依赖关系

~2.1–3MB
~54K SLoC