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

Языки

Bugsaur не привязан к языку: он говорит на DAP, а знание о языке живёт в адаптере. Между языками различаются три вещи: какой брать адаптер, что означает program и что обычно ломается.

Что поддерживается

Язык Адаптер Проект опознаётся по program — это
Rust codelldb Cargo.toml собранный бинарник
C / C++ codelldb не опознаётся — настраивается вручную собранный бинарник
Go dlv go.mod каталог пакета
Python debugpy pyproject.toml, setup.py, requirements.txt скрипт
PHP php (встроенный) composer.json каталог проекта

У C и C++ нет автоопределения

bugsaur init опознаёт четыре языка, и C/C++ среди них нет: единого файла- маркера, по которому узнаётся C-проект, не существует. Сам адаптер — тот же codelldb, что и для Rust — работает нормально, просто профиль пишется руками. См. C / C++.

Что генерирует bugsaur init

Определение идёт вверх от каталога запуска, и ближайший проект выигрывает у объемлющего. Дальше пишется по профилю на каждую вещь, которую стоит отлаживать:

Язык По профилю на
Rust бинарник: каждый [[bin]] либо пакет с src/main.rs. Библиотеке профиля не полагается
Go каталог с package main: корень модуля и прямые подкаталоги cmd/*
Python точку входа: main.py, app.py, manage.py, __main__.py в корне и src/<pkg>/__main__.py
PHP проект

Проект без запускаемой точки входа даёт ноль профилей, и запуск останавливается с ошибкой, а не пишет конфиг с выдуманной программой внутри.

Что одинаково для всех

  • Относительные пути считаются от корня проекта — ближайшего вверх по дереву каталога с .bugsaur/.
  • Рабочим каталогом по умолчанию становится корень проекта, а не каталог программы. См. Настройка → Рабочий каталог.
  • ${root} разворачивается в абсолютный путь корня в env, args, adapter_command и launch_arguments.
  • Точки останова лежат в .bugsaur/breakpoints.json и общие с редактором.

Сводка покрытия

работает по умолчанию · ⚠️ одна явная строка в профиле · не покрывается

Сценарий Go Rust Python PHP
.env в корне, приложение читает его само
.env, приложение его не читает ⚠️ env_file ⚠️ env_file ⚠️ env_file
Относительные пути к configs/, migrations/
Несколько отлаживаемых частей cmd/* ✅ по бинарникам ✅ по точкам входа
Аргументы командной строки args args args
Точка входа в нестандартном месте ⚠️ ⚠️
Монорепа, общий .env выше корня ⚠️ env_file = "../..." ⚠️ ⚠️
Отладка тестов с testdata/ ⚠️ cwd ⚠️ cwd ⚠️ cwd
Запуск без предварительной сборки ❌ соберите сами
go.work / несколько модулей
Рабочий каталог и окружение ❌ по устройству

У PHP в большинстве строк прочерк, а не галочка, потому что его адаптер ничего не запускает — он слушает, а PHP-процесс поднимает кто-то другой. Что это меняет, разобрано на странице PHP.