blob: e0dafd268550488ce7215dbdf0597363946031e7 [file] [view] [edit]
# Priroda
Priroda is a step-through debugger for Rust programs running under Miri.
Current focus:
- simple CLI prototype
- single-threaded stepping with Miri's interpreter
- source-location output after stepping
- source-location breakpoint prototype
## Setup
From `miri/`, install the pinned toolchain and the local `cargo-miri`
command:
```sh
./miri toolchain
./miri install
```
Then build the Miri sysroot and export it for Priroda:
```sh
cargo +miri miri setup
export MIRI_SYSROOT="$(cargo +miri miri setup --print-sysroot)"
```
## Run
Priroda currently reads `MIRI_SYSROOT` directly. After setup, run Priroda
from `miri/priroda/`:
```sh
cargo run -- ../tests/pass/empty_main.rs
```
## Test
Priroda's CLI tests also need `MIRI_SYSROOT`. Run them from `miri/priroda/`:
```sh
cargo test
```
If the CLI tests fail due to mismatched output, you can update the expected output files by running the tests with the `--bless` flag:
```sh
cargo test -- --bless
```
or
```sh
RUSTC_BLESS=1 cargo test
```
## Commands
| Command | Description |
|---|---|
| Enter, `s`, `step` | Execute one Miri interpreter step. |
| `c`, `continue` | Continue until the program finishes or reaches a breakpoint. |
| `b <path>:<line>`, `break <path>:<line>` | Add a source-location breakpoint. |
| `q`, `quit` | Exit Priroda. |
EOF also exits Priroda cleanly.
Example:
```text
(priroda) break tests/pass/empty_main.rs:3
(priroda) continue
```