Перейти к содержанию

Отладка исполняемого файла Rust

Остановиться внутри Rust-бинарника и посмотреть его состояние.

Предпосылки

  • codelldb в PATHcommand -v codelldb
  • проект на Cargo

Конфиг

bugsaur init пишет его за вас; проверьте, что program соответствует имени вашего бинарника.

version = 1
default = "app"

[profiles.app]
adapter = "codelldb"
program = "target/debug/app"

В workspace профиль заводится на каждый бинарник, а program выглядит как target/debug/<имя бинарника>target/ лежит в корне workspace.

Запуск

cargo build
bugsaur gui --project . --break src/main.rs:15

Порядок важен: program указывает на артефакт сборки, а Rust Bugsaur за вас не собирает.

Что должно произойти

Открывается окно, программа выполняется и останавливается на строке 15. В Variables видны локальные переменные этого фрейма, в Call Stack — как вы сюда попали.

Варианты

Конкретный бинарник в workspace

cargo build
bugsaur gui --project . --profile daemon --break crates/daemon/src/main.rs:20

С аргументами

[profiles.app]
adapter = "codelldb"
program = "target/debug/app"
args = ["import", "--dry-run", "${root}/fixtures/sample.csv"]

С окружением из файла

[profiles.app]
adapter = "codelldb"
program = "target/debug/app"
env_file = ".env"
env = { RUST_LOG = "debug" }

Код, читающий CARGO_* в рантайме

cargo run выставляет переменные, которых при прямом запуске нет. Добавьте те, что нужны коду:

env = { CARGO_MANIFEST_DIR = "${root}" }

Если не работает

Симптом Что делать
program is not readable выполните cargo build; проверьте имя бинарника в program
Сессия не стартует codelldb не виден через PATHАдаптер не запускается
Останавливается, но переменных нет собрано с --release; отлаживайте debug-сборку
Никогда не останавливается Точки останова не срабатывают