بنقرة واحدة
dap-bsl-code-debug-procedure
Интерактивная DAP-отладка одной BSL-процедуры
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Интерактивная DAP-отладка одной BSL-процедуры
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف 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: