#tokio #debugging #stub #programs #opinionated #expose #most

delouse

delouse 将公开大多数针对基于 tokio 的异步程序最有用的有偏调试存根

2 个版本

0.1.5 2024 年 2 月 6 日
0.1.4 2024 年 2 月 2 日

#324 in 异步

Download history 6/week @ 2024-03-13 21/week @ 2024-03-20 17/week @ 2024-03-27 22/week @ 2024-04-03 19/week @ 2024-04-10 29/week @ 2024-04-17 32/week @ 2024-04-24 98/week @ 2024-05-01 161/week @ 2024-05-08 126/week @ 2024-05-15 62/week @ 2024-05-22 67/week @ 2024-05-29 90/week @ 2024-06-05 57/week @ 2024-06-12 123/week @ 2024-06-19 96/week @ 2024-06-26

每月 392 次下载

MIT 许可证

20KB
246

[!WARNING] 此软件包已上线并公开,但目前由于 问题 #1 而损坏。

使用 delouse

首先,编辑你的 Cargo.toml 以将 delouse crate 添加为可选依赖项,并添加一个新的功能 ("debug").

[dependencies]
...
delouse = { version = "0", optional = true }
...

[features]
...
debug = ["dep:delouse"]
...

接下来,在 main 或类似的启动过程中,添加以下内容

...

async fn main() -> Result<()> {
    #[cfg(feature = "debug")]
    {
        delouse::init().unwrap();
    }

    ...
}

...

运行您的程序

当使用 cargo buildcargo run 运行时,添加额外的 --features debug 标志以启用 delouse

使用 delouse

默认情况下,由于尚无开关,delouse 将绑定到 127.0.0.1:7132。接口基于 OpenAPI/JSON,因此您可以根据需要剃掉那只羊,但我倾向于只使用 cURL。以下是一些坏天气的命令

什么 命令 平台限制 注意
Rust 栈跟踪 curl https://127.0.0.1:7132/stacktrace/rust | jq -r .stacktrace
ELF 信息 curl https://127.0.0.1:7132/elf/info | jq . Linux 🐧
请求 coredump curl https://127.0.0.1:7132/coredump Linux 🐧 进程将退出
Tokio 栈跟踪 curl https://127.0.0.1:7132/stacktrace/tokio | jq -r .stacktrace Linux 🐧, tokio_unstable 此端点是 非常 不稳定的。如果此操作锁定 tokio 的运行时,此操作将引发进程恐慌并带有堆栈跟踪。

tokio 特定说明

我们需要的大部分表面都是不稳定的。以下表格列出了端点和所需的 cfg 指令。

端点 cfgs
stacktrace/tokio tokio_unstable, tokio_taskdump

在作者非常谦逊的看法中,在没有特定信念或工程限制的情况下,当使用tokio运行时,以下.cargo/config.toml设置是推荐的。

[build]
rustflags = ["--cfg", "tokio_unstable"]

[target.x86_64-unknown-linux-gnu]
rustflags = ["--cfg", "tokio_unstable", "--cfg", "tokio_taskdump"]

如果这不可能实现,delouse将优雅地降级,不提供无法运行的任何端点。

依赖项

~23–53MB
~1M SLoC