Кабинет
На этой странице

Рецепты

Парная отладка

Цель — найти причину ошибки вдвоём. Человек выполняет сценарий в клиенте 1С:Предприятия, а агент через Кванту подключается к отладчику, ставит точку останова, дожидается остановки, читает стек и переменные, вычисляет выражения и шагает по коду.

обновлено 30.09.2026плагин 0.2.0 · EDT 2025.2Предложить правку или письмом

Предпосылки

  • Информационная база запущена с сервером отладки. Для файловой базы — локальный сервер отладки на порту 1550 и клиент, запущенный с отладкой по HTTP:

    командная строка
    dbgs.exe --addr=127.0.0.1 --port=1550

    Клиент 1С:Предприятия — с параметрами /debug -http -attach /debuggerURL http://127.0.0.1:1550.

  • Проект конфигурации этой базы открыт в EDT: по нему отладчик находит модули.

  • Действует ключ или бесплатный доступ.

Шаги

1. Точка останова

Точку можно поставить ещё до подключения: она появится в EDT как обычная и будет передана отладчику при подключении.

debug_write
{
  "operation": "set",
  "project": "УТ2020",
  "module_fqn": "Документ.РеализацияТоваровУслуг.МодульОбъекта",
  "line": 120,
  "condition": "Не ЗначениеЗаполнено(Контрагент)"
}

Строка — номер из code_read. Пустая строка или комментарий — отказ с ближайшей исполняемой строкой. condition — необязательное условие на встроенном языке.

2. Подключиться

debug_action
{
  "operation": "connect",
  "project": "УТ2020",
  "debug_server_url": "http://127.0.0.1:1550",
  "infobase": "DefAlias"
}

Для файловой базы псевдоним — DefAlias. Новые предметы отладки — сеансы, фоновые задания — подключаются автоматически. Сессия отладки на рабочую область одна.

3. Человек выполняет сценарий, агент ждёт

debug_read
{ "operation": "wait", "timeout_ms": 20000 }

Исход: 🟠 suspended с местом остановки, точкой и фрагментом кода со строкой ► — или 🔵 running, если за время ожидания остановки не было. Повторять wait в цикле дёшево.

4. Стек и переменные

debug_read
{ "operation": "stack", "args": "top" }
debug_read
{ "operation": "variables", "path": "Объект.Товары.Элементы", "rows": "1-20" }

Стек показывает параметры верхних кадров со значениями. Переменные раскрываются на один уровень; .Элементы у таблицы значений даёт страницу строк таблицей, rows листает живую коллекцию.

5. Вычислить выражение

debug_read
{ "operation": "evaluate", "expression": "Объект.Товары.Итог(\"Количество\")", "frame": 0 }

Вычисление выполняется в контексте кадра и может иметь побочные эффекты, если выражение вызывает методы, меняющие данные.

6. Шаг и продолжение

debug_action
{ "operation": "step_over" }

step_into, step_over, step_return ждут, где остановится выполнение, и показывают то же, что wait. resume отпускает выполнение. Чтобы проверить гипотезу, можно поменять значение переменной — debug_write с операцией modify_value, ответ покажет «было → стало».

7. Убрать за собой

debug_write
{ "operation": "clear", "clear_all": true }
debug_action
{ "operation": "disconnect" }

clear_all удаляет только точки, поставленные через Кванту; точки человека остаются. После отключения база продолжает работать.

Проверка

debug_read с операцией breakpoints — список точек рабочей области; targets — предметы отладки с метками t1, t2 и их состоянием.

Если не подключается

Сервер отладки не отвечает — ответ 🔴 failed с подсказкой:

ответ debug_action
### 🔴 connect — `tcp://127.0.0.1:1560`

- **status:** 🔴 failed
- **message:** debug-сервер не отвечает (таймаут 1.5с)
- **target:** file-infobase (DefAlias)
- **fix_hint:** проверьте, что dbgs.exe запущен: dbgs --addr=127.0.0.1 --port=1560

#### Did you mean

- 1550
- 1570

#### Context

- активная сессия: нет

Проверьте, что dbgs.exe запущен на нужном порту, а клиент подключён к нему с параметром /debuggerURL.

Откат

Отладка не меняет конфигурацию. Значения, изменённые через modify_value, живут только в текущем выполнении.

Нашли ошибку — предложите правку.обновлено 30.09.2026

Например: metadata_write, «порт занят», коллекционный адрес.

↑ ↓ выборEnter открыть/ или Ctrl K — открыть поиск