Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure docs.rs builds.
If you believe this is docs.rs' fault, open an issue.
Using delouse
First, edit your Cargo.toml to add the delouse crate as an optional
dependency, and add a new feature ("debug").
[]
...
= { = "0", = true }
...
[]
...
= ["dep:delouse"]
...
Next, during the startup in your main or similar, put in:
...
async
...
Running your program
When building with cargo build or running with cargo run, add an additional
--features debug flag to enable delouse.
Using delouse
By default, and due to no toggles existing yet, delouse will bind to
127.0.0.1:7132. The interface is OpenAPI/JSON based, so you can shave
that yak how you'd like, but I tend to just use cURL. Here's some commands
for bad days:
| What | Command | Platform Restrictions | Notes |
|---|---|---|---|
| Rust Stacktrace | curl http://localhost:7132/stacktrace/rust | jq -r .stacktrace | ||
| ELF Information | curl http://localhost:7132/elf/info | jq . | Linux 🐧 | |
| Request a coredump | curl http://localhost:7132/coredump | Linux 🐧 | Process will exit |
| Tokio Stacktrace | curl http://localhost:7132/stacktrace/tokio | jq -r .stacktrace | Linux 🐧, tokio_unstable |
This endpoint is very flaky. If this locks up tokio's runtime, this will panic the process with the stacktrace. |
tokio specific notes
A lot of the surface we need is unstable. The following table is a list
of endpoints and required cfg directives.
| Endpoint | cfgs |
|---|---|
stacktrace/tokio |
tokio_unstable, tokio_taskdump |
In the author's very humble opinion, the following .cargo/config.toml
settings are encouraged, in the absense of overriding convictions or
specific engineering restrictions when running with tokio:
[]
= ["--cfg", "tokio_unstable"]
[]
= ["--cfg", "tokio_unstable", "--cfg", "tokio_taskdump"]
If this is not possible, delouse will gracefully degrade and not
serve any endpoints which can not be run.