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

Аргументы программы

args — это командная строка, которая передаётся отлаживаемой программе.

[profiles.web]
adapter = "debugpy"
program = "manage.py"
args = ["runserver", "--noreload", "8000"]

По элементу на аргумент

args — список, а не строка, и каждый элемент это один аргумент. Разница важна всякий раз, когда в значении есть пробел:

args = ["--message", "hello world"]        # два аргумента
args = ["--message hello world"]           # один аргумент, почти наверняка не то

Никакого шелла в процессе нет: ни разбиения на слова, ни раскрытия шаблонов, ни подстановки переменных, кроме ${root} ниже. Что написали, то и получит argv программы.

${root}

${root} разворачивается в абсолютный путь корня проекта:

args = ["--config", "${root}/configs/dev.yaml"]

Пользуйтесь им, когда программе нужен абсолютный путь. Голый относительный путь тоже работает — его разрешает сама программа относительно своего рабочего каталога, а это по умолчанию корень проекта.

Аргументы, похожие на флаги отладчика

Двусмысленности нет: args уходит отлаживаемой программе, и ничто внутри него Bugsaur не интерпретирует. Профиль с args = ["--project", "x"] передаст вашей программе --project x.

Отладка теста под курсором подменяет args

Когда вы отлаживаете тест под курсором — :DebugTest или --test-at, — программа и её аргументы подменяются на те, что нужны выбранному тесту. Всё остальное из профиля — адаптер, окружение, рабочий каталог — наследуется без изменений.

Поэтому для отладки одного теста не нужно дописывать в профиль аргументы pytest или cargo test: их подставляет сам механизм запуска теста.

Примеры

[profiles.api]
adapter = "dlv"
program = "cmd/api"
args = ["--config", "${root}/configs/dev.yaml", "--verbose"]
[profiles.cli]
adapter = "codelldb"
program = "target/debug/cli"
args = ["import", "--dry-run", "${root}/fixtures/sample.csv"]
[profiles.web]
adapter = "debugpy"
program = "manage.py"
args = ["runserver", "--noreload", "8000"]

У PHP args не бывает: адаптер ничего не запускает, значит и командной строки задавать некому. См. Языки → PHP.

Смежное