com um clique
dap-bsl-code-debug-procedure
Интерактивная DAP-отладка одной BSL-процедуры
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
Интерактивная DAP-отладка одной BSL-процедуры
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
When writing or reviewing BSL, apply 1C standards
При написании или ревью BSL применять стандарты 1С
Orchestrator: routing work and agent phases
Оркестратор: маршрутизация работы и фаз агентов
BSL LSP navigation: definitions, refs, call graph
Rules for using RLM tools for project search and navigation in 1C/BSL
| name | dap-bsl-code-debug-procedure |
| description | Интерактивная DAP-отладка одной BSL-процедуры |
| uses_capabilities | ["debug_bsl_code"] |
Используй навык для точечной интерактивной отладки, когда статический анализ, ЖР, скриншоты и временное логирование не дают ответа о фактическом пути исполнения или значениях переменных.
Перед стартом должны быть известны:
Если MCP-сервер отладчика не настроен, используй инструкцию docs/info/mcp-bsl-debugger.md.
code-navigation или чтение модуля.attach.get_targets.reload_metadata.set_breakpoints.wait_for_stop каждые 5 секунд.get_call_stack, если tool доступен, затем get_variables.evaluate.step_in, step_out, continue.clear_breakpoints.detach.Порядок всегда один: сначала breakpoint, потом запуск сценария, потом polling stop event в отладчике. Не запускай тест или клиентское действие до установки breakpoint, иначе нужный участок может пройти до подключения отладчика.
После запуска сценария агент не определяет остановку по “зависанию” клиента. Он сразу переходит к debugger MCP и вызывает wait_for_stop с интервалом 5 секунд:
Используй, когда отлаживаемый код выполняется в форме, команде, обработчике UI или другом клиентском контексте.
v8-session-manager получить список активных сессий и определить сеанс тест-агента: infobase_name, ib_session_number, session_id, пользователь, признак тестового клиента.get_targets отладчика выбрать target, соответствующий этому сеансу. Если соответствие неочевидно, сверить время запуска, пользователя и номер сеанса ИБ.wait_for_stop каждые 5 секунд до stop event или контрольного таймаута.continue вернуться к Vanessa-прогону и дождаться его штатного завершения.Используй, когда сценарий проще инициировать накликиванием, чем писать или запускать Vanessa.
v8-session-manager.session_list и сопоставить с target отладчика.Используй, когда отлаживаемый код выполняется на сервере, в общем модуле серверного назначения, менеджере, объекте, проведении или серверной части формы.
wait_for_stop; для быстрого серверного метода предел ожидания 30 секунд, для тяжёлого — заранее заданный контрольный предел.continue дождаться завершения теста и проверить его результат.Используй как крайний вариант, когда серверный метод нельзя удобно вызвать тестом, HTTP-запросом или существующим runner/tool.
mcp_tools временно добавить узкий tool, который вызывает только нужную серверную точку входа с контролируемыми параметрами.Допустимы HTTP-сервис, регламентное задание, проведение документа или фоновое задание, если это безопасно и воспроизводимо. Для таких сценариев заранее зафиксируй, какой target должен остановиться, и не оставляй остановленный поток в транзакции.
Ставь breakpoint не “где-нибудь в процедуре”, а на строке, которая отвечает на текущий вопрос:
Если — проверить переменные, влияющие на ветвление;Если процедура не останавливается, проверь:
Смотри только значения, которые влияют на текущую гипотезу:
Не вычисляй выражения с побочными эффектами. evaluate допустим для чтения простых выражений, но не для записи, проведения, вызовов HTTP, изменения глобального состояния и запуска бизнес-операций.
Используй шаги экономно:
step_in — когда нужно зайти в вызываемую процедуру и увидеть её аргументы/ветку;step_out — когда текущая процедура уже понятна и нужен результат возврата;continue — когда нужно дойти до следующего breakpoint или отпустить поток;pause — только если нужно остановить уже выполняющийся target и это безопасно для сеанса.После каждого шага фиксируй наблюдение: где остановились, какие значения изменились, какая гипотеза подтвердилась или отпала.
Перед финальным ответом или передачей задачи дальше обязательно:
clear_breakpoints по всем установленным точкам.continue, если поток ещё остановлен и его безопасно отпустить.detach.detach не сработал, attach возвращает ibInDebug, ping-cycle завис или get_targets показывает активный debug-состояние после очистки — выполнить force_detach, затем повторно проверить get_targets.agent-debug с ЖР.depends_on: