Почему пропадает отладчик на сервере 1С 8.3 и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При разработке и отладке конфигураций на платформе «1С:Предприятие 8.3» разработчики часто сталкиваются с неприятным поведением отладчика: при запуске клиентского приложения кнопкой F5 предмет отладки Сервер присутствует в списке, но в процессе работы неожиданно пропадает. Точки останова на серверной стороне перестают срабатывать, а повторно подключить серверный предмет отладки без перезапуска Конфигуратора или клиента не удается. Рассмотрим подробнее, почему происходит эта ошибка и какие способы позволяют раз и навсегда решить проблему.

Выясняем причину: почему пропадает серверный предмет отладки

Проанализируем механику работы кластера серверов 1С. Начиная с версии 8.3, платформа поддерживает динамическую балансировку нагрузки и миграцию сеансов пользователей между несколькими рабочими процессами rphost.exe. По умолчанию отладка в 1С работает по протоколу TCP/IP (ключ запуска -debug со значением по умолчанию -tcp).

Когда в кластере задействовано несколько рабочих процессов rphost.exe, происходит следующее:

  1. Пользовательский сеанс начинает работу в одном рабочем процессе rphost.exe, с которым Конфигуратор устанавливает TCP-соединение для отладки.
  2. В процессе работы (при превышении лимитов памяти, вызове фоновых заданий или балансировке нагрузки) сеанс перенаправляется в другой рабочий процесс rphost.exe.
  3. При отладке по протоколу TCP сетевой сокет отладчика остается привязанным к первому процессу. При переносе сеанса соединение разрывается, и предмет отладки Сервер безнадежно исчезает из списка подключенных предметов.

Способ 1. Перевод отладки на HTTP-протокол (Рекомендуемый)

Разберем основной и наиболее надежный вариант решения проблемы. Платформа «1С:Предприятие 8.3» предоставляет альтернативный механизм отладки по протоколу HTTP, в котором за маршрутизацию предметов отладки отвечает отдельный сервис отладки dbgs.exe. При HTTP-отладке миграция сеансов между процессами rphost.exe не приводит к потере связи.

Чтобы перевести сервер 1С на HTTP-отладку, выполним следующие шаги:

  1. Откроем службу реестра Windows или параметры запуска службы 1C:Enterprise 8.3 Server Agent (ragent.exe).
  2. В строке запуска службы найдем параметр -debug и явно укажем протокол HTTP:

    ragent.exe -debug -http

  3. Перезапустим службу сервера 1С.
  4. В Конфигураторе откроем параметры отладки (меню Сервис — Параметры — Отладка).
  5. Установим режим отладки HTTP и укажем адрес и порт отладочного сервера (по умолчанию используется порт 1560).

После включения HTTP-протокола служба dbgs.exe будет централизованно агрегировать все предметы отладки со всех процессов rphost.exe, и отладчик перестанет отключаться.

Способ 2. Ограничение количества рабочих процессов сервера

Если по техническим причинам переключиться на HTTP-протокол невозможно, разберем альтернативный вариант — предотвращение миграции сеансов на уровне настроек кластера 1С.

  1. Запустим утилиту Администрирование серверов 1С Предприятия.
  2. Перейдем в свойства кластера серверов и проанализируем параметры рабочих процессов.
  3. Настроим параметры так, чтобы на одну информационную базу приходился только один рабочий процесс, либо уменьшим количество рабочих процессов на информационную базу до 1.
  4. Установим параметр Количество информационной базы на рабочий процесс равным 1.

При такой конфигурации все сеансы базы выполняются в рамках единого процесса rphost.exe, миграция прекращается, и классическая TCP-отладка работает стабильно.

Дополнительные рекомендации по настройке сети

Посмотрим на дополнительные факторы, которые могут вызывать отвал отладчика по протоколу TCP:

  1. Брандмауэр и антивирусы: Убедимся, что на компьютере разработчика и на сервере открыты порты отладочного диапазона (по умолчанию 1560–1591), а также управляющий порт 1550. Отладка по TCP требует двунаправленного соединения: не только клиент подключается к серверу, но и сервер инициирует обратные соединения на ПК разработчика.
  2. Файл debugcfg.xml: При необходимости расширить диапазон портов отладки создадим в каталоге bin\conf на сервере файл debugcfg.xml и зададим необходимый диапазон портов.
  3. Автоматическое подключение: В Конфигураторе в окне Отладка — Подключение предметов отладки нажмем кнопку Настройка автоматического подключения и убедимся, что включены флаги для серверных сеансов и фоновых заданий.
← На главную