con un clic
dap-bsl-code-debug-procedure
Interactive DAP debugging of a single BSL procedure
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Menú
Interactive DAP debugging of a single BSL procedure
Instalar con Codex o Claude Copia este prompt, pégalo en Codex, Claude u otro asistente, y deja que revise la página de la skill y la instale por ti.
Basado en la clasificación 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 | Interactive DAP debugging of a single BSL procedure |
| uses_capabilities | ["debug_bsl_code"] |
Use this skill for focused interactive debugging when static analysis, the event log, screenshots, and temporary logging do not answer the actual execution path or variable values.
Before starting, the following must be known:
If the MCP debugger server is not configured, use the instructions in docs/info/mcp-bsl-debugger.md.
code-navigation or by reading the module.attach.get_targets.reload_metadata.set_breakpoints.wait_for_stop every 5 seconds.get_call_stack, if the tool is available, then get_variables.evaluate.step_in, step_out, continue.clear_breakpoints.detach.The order is always the same: breakpoint first, then scenario start, then stop-event polling in the debugger. Do not start the test or client action before the breakpoint is set, otherwise the required section may run before the debugger connects.
After the scenario starts, the agent does not determine a stop from the client "freezing". It immediately switches to the debugger MCP and calls wait_for_stop at 5-second intervals:
Use this when the code being debugged runs in a form, command, UI handler, or other client context.
v8-session-manager, get the list of active sessions and identify the test agent session: infobase_name, ib_session_number, session_id, user, test client flag.get_targets, select the target corresponding to this session. If the match is not obvious, verify the start time, user, and infobase session number.wait_for_stop every 5 seconds until a stop event or the control timeout.continue, return to the Vanessa run and wait for it to finish normally.Use this when it is easier to trigger the scenario by clicking around than by writing or running Vanessa.
v8-session-manager.session_list and match it with the debugger target.Use this when the code being debugged runs on the server, in a server-side common module, manager, object, posting, or the server part of a form.
wait_for_stop; for a fast server method the waiting limit is 30 seconds, for a heavy one - a pre-defined control limit.continue, wait for the test to finish and verify its result.Use this as a last resort when the server method cannot be conveniently called by a test, HTTP request, or an existing runner/tool.
mcp_tools, temporarily add a narrow tool that calls only the required server entry point with controlled parameters.HTTP service, scheduled job, document posting, or background job are acceptable if this is safe and reproducible. For such scenarios, record in advance which target should stop, and do not leave a stopped thread in a transaction.
Set the breakpoint not "somewhere in the procedure", but on the line that answers the current question:
If - verify the variables that affect branching;If the procedure does not stop, check:
Look only at the values that affect the current hypothesis:
Do not evaluate expressions with side effects. evaluate is allowed for reading simple expressions, but not for writing, posting, HTTP calls, changing global state, or starting business operations.
Use steps sparingly:
step_in - when you need to enter the called procedure and see its arguments/branch;step_out - when the current procedure is already clear and you need the return result;continue - when you need to reach the next breakpoint or release the thread;pause - only if you need to stop an already running target and this is safe for the session.After each step, record the observation: where execution stopped, which values changed, which hypothesis was confirmed or rejected.
Before the final answer or before handing the task over, do the following:
clear_breakpoints for all set breakpoints.continue, if the thread is still stopped and it is safe to release it.detach.detach did not work, attach returns ibInDebug, the ping cycle hung, or get_targets shows an active debug state after cleanup - run force_detach, then check get_targets again.agent-debug with the event log is cheaper.depends_on: