有没有办法直接在gdb或lldb中运行由Cargo构建的程序?

时间:2018-10-07 05:58:42

标签: debugging rust gdb lldb rust-cargo

是否有一种方法可以立即在gdb中运行由Cargo构建的程序? cargo具有很多功能并且可以运行该程序,因此似乎是可行的。

期望的命令类似于cargo debug

1 个答案:

答案 0 :(得分:8)

不,目前Cargo中没有这种东西。

有一些问题(12)可以更好地支持类似问题。

您目前最好的做法是编写一个Cargo subcommand,它完全可以满足您的需求。

一种解决方法

无需创建子命令,就可以将一些功能粘合在一起,以实现更紧密的结合。

首先为您的体系结构配置a custom runner

.cargo / config

[target.x86_64-apple-darwin]
runner = ["/tmp/gg/debugger.sh"]

然后编写一个小脚本作为测试运行程序。如果设置了环境变量,它将启动调试器,否则将仅运行程序:

#!/bin/bash

if [[ -z $DEBUG ]]; then
    exec $*
else
    exec lldb $*
fi

然后您只需要设置变量:

$ cargo test
    Finished dev [unoptimized + debuginfo] target(s) in 0.04s
     Running target/debug/deps/gg-e5d6c92730ca3c30

running 0 tests

$ DEBUG=1 cargo test
    Finished dev [unoptimized + debuginfo] target(s) in 0.01s
     Running target/debug/deps/gg-e5d6c92730ca3c30
(lldb) target create "/private/tmp/gg/target/debug/deps/gg-e5d6c92730ca3c30"
Current executable set to '/private/tmp/gg/target/debug/deps/gg-e5d6c92730ca3c30' (x86_64).
(lldb)

另请参阅: