К статье
Практический материал

Администрирование · 11 мин

Как прописать debug на сервере 1С 8.3

Как прописать debug на сервере 1С 8.3: включение режима отладки через службу агента, реестр и консоль кластера, протоколы TCP и HTTP, типичные ошибки.

Отладка серверного кода в 1С 8.3 не работает «из коробки»: по умолчанию кластер серверов запускается без поддержки отладки, и конфигуратор не может подключиться к серверным процедурам. Чтобы точки останова в серверных модулях начали срабатывать, нужно запустить агент сервера с ключом -debug и правильно настроить предметы отладки в конфигураторе.

Процедура отличается в зависимости от того, как развёрнут сервер: служба Windows, демон Linux или запуск из командной строки. Также имеет значение протокол отладки — устаревший TCP или современный HTTP, который рекомендуется для новых версий платформы и позволяет отлаживать и файловые, и клиент-серверные базы единообразно.

Ниже разобраны все способы включения отладки, настройка конфигуратора, проверка результата и типичные ошибки, из-за которых точки останова «не ловятся» даже после, казалось бы, правильной настройки.

Когда нужна серверная отладка и как она устроена

В клиент-серверном варианте работы значительная часть кода выполняется на сервере: серверные процедуры общих модулей, обработчики проведения, запросы к СУБД, регламентные задания. Обычный запуск отладки из конфигуратора подключается только к клиентскому процессу, поэтому серверный код исполняется «мимо» точек останова.

Механизм отладки строится на взаимодействии трёх компонентов: конфигуратора (отладчика), агента сервера (ragent) и рабочих процессов кластера (rphost), в которых исполняется код. Ключ -debug указывает агенту принимать подключения отладчика и передавать управление рабочим процессам. Без этого ключа агент просто игнорирует запросы на отладку.

Важно понимать: режим отладки включается на уровне всего кластера, а не отдельной базы. Если на одном сервере работают несколько продуктивных баз, включение отладки затронет всех пользователей этого кластера — об этом подробнее в разделе про риски.

Выбор протокола отладки: TCP или HTTP

Платформа 8.3 поддерживает два протокола отладки. Протокол TCP — исторически первый, работает через прямое подключение к агенту по порту отладки. Протокол HTTP появился позже и стал рекомендуемым: отладочный трафик идёт через веб-сервер или через сам кластер, что упрощает работу через NAT, брандмауэры и позволяет отлаживать мобильные клиенты и веб-клиент.

Для сервера под управлением современных версий платформы выбирайте HTTP. TCP остаётся актуальным для старых релизов и в простых локальных сценариях, когда конфигуратор и сервер находятся в одной сети без ограничений. Протокол выбирается в конфигураторе: меню «Сервис» → «Параметры» → вкладка «Отладка».

Сравнение вариантов

Протокол TCP

Подходит для старых версий платформы и простой локальной сети. Ограничение: требует прямого сетевого доступа к порту отладки агента, проблематичен через NAT и VPN.

Протокол HTTP

Рекомендуемый вариант для актуальных версий. Работает через публикацию на веб-сервере или напрямую через кластер, поддерживает отладку веб-клиента и мобильных клиентов. Требует корректной настройки адреса отладки.

Отладка по HTTPS

Используется, когда трафик должен быть зашифрован, например при отладке через интернет. Требует настроенного сертификата на веб-сервере.

Включение отладки через службу Windows

Самый частый сценарий на Windows-сервере: агент сервера 1С работает как служба. Параметры её запуска хранятся в реестре, а не в оснастке служб, поэтому ключ добавляется через редактор реестра.

Откройте редактор реестра и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Найдите подраздел службы агента сервера — его имя содержит версию платформы, например 1C:Enterprise 8.3 Server Agent с номером версии и портом. В параметре ImagePath хранится полная строка запуска ragent.exe.

Добавьте в конец строки запуска ключ -debug. Для протокола HTTP дополнительно укажите -debug -http (в ряде версий платформы HTTP-отладка на сервере включается именно так). Сохраните изменение, затем перезапустите службу: через оснастку «Службы» или командой net stop / net start с именем службы.

Порядок действий
  1. 1
    Остановите службу агента сервера 1С через оснастку services.msc
  2. 2
    Откройте реестр и найдите ветку службы агента в HKLM\SYSTEM\CurrentControlSet\Services
  3. 3
    В параметре ImagePath добавьте в конец строки запуска ключ -debug (для HTTP-отладки — также флаг протокола HTTP)
  4. 4
    Сохраните изменения и запустите службу заново
  5. 5
    В конфигураторе выберите протокол отладки и включите предметы отладки
  6. 6
    Проверьте подключение: запустите отладку и убедитесь, что серверные точки останова активны

Обратите внимание на кавычки в ImagePath: путь к ragent.exe заключён в кавычки, а ключи идут после закрывающей кавычки. Не нарушайте структуру строки — при ошибке служба просто не запустится.

Включение отладки на Linux и при запуске из командной строки

На Linux-сервере агент обычно запускается через systemd-юнит или скрипт. Параметры запуска задаются в файле юнита (директива ExecStart) или в переменных окружения, которые подхватывает скрипт запуска. Добавьте -debug в строку запуска ragent и перезапустите юнит: systemctl restart с именем службы агента.

Если сервер запускается вручную из командной строки (что типично для тестовых стендов), достаточно добавить ключ в команду запуска:

/opt/1cv8/x86_64/current/ragent -debug

Для тестового контура удобно держать отдельный скрипт запуска с отладкой, чтобы не менять основной. При ручном запуске помните, что процесс привязан к сессии — при закрытии терминала агент остановится, если не использовать nohup или screen.

bash
systemctl edit srv1cv8 --full  # добавить -debug в ExecStart, затем: systemctl daemon-reload && systemctl restart srv1cv8

Настройка конфигуратора и предметов отладки

Включённый на сервере режим отладки — только половина дела. В конфигураторе откройте «Отладка» → «Предметы отладки» и отметьте типы кодов, которые нужно отлаживать: сервер, фоновые задания, внешние соединения, HTTP-сервисы. По умолчанию часть предметов отключена, и это вторая по частоте причина «неработающих» точек останова.

При использовании протокола HTTP укажите адрес отладки в настройках информационной базы или в параметрах конфигуратора. Для базы, опубликованной на веб-сервере, это адрес публикации с суффиксом отладочного ресурса. Убедитесь, что в свойствах публикации разрешена отладка (параметр debug в файле default.vrd).

Для отладки регламентных и фоновых заданий включите соответствующий предмет отладки и учтите: фоновое задание может стартовать в другом рабочем процессе. В окне «Подключение» конфигуратора вручную подключите нужный процесс, если автоматическое подключение не сработало.

Проверка результата и контрольные точки

Быстрая проверка: откройте конфигуратор, поставьте точку останова в серверной процедуре общего модуля и запустите отладку (F5). Вызовите эту процедуру из клиентского приложения. Если исполнение остановилось на точке — серверная отладка работает.

Дополнительно проверьте список подключённых предметов отладки: меню «Отладка» → «Подключение». В списке должны присутствовать процессы с типом «Сервер». Если список пуст или содержит только клиентский процесс — ключ не применился или протокол настроен неверно.

Контрольные точки

Как проверить результат

Список подключений в конфигураторе
Норма

Присутствуют процессы с типом «Сервер»

Тревожный признак

Только клиентский процесс — ключ -debug не применился

Поведение точки останова в серверном модуле
Норма

Точка активна (сплошной маркер), исполнение останавливается

Тревожный признак

Точка с восклицательным знаком или исполнение проходит мимо

Строка запуска службы в реестре
Норма

В ImagePath присутствует ключ -debug

Тревожный признак

Ключ отсутствует или опечатка в его написании

Риски, ограничения и типичные ошибки

Режим отладки снижает производительность кластера и открывает дополнительный канал подключения к серверу. На продуктивном контуре с реальными пользователями включайте отладку только на время диагностики и выключайте сразу после. Правильная практика — воспроизводить проблему на копии базы в тестовом кластере.

Самая частая ошибка — забыть перезапустить службу после правки реестра. Вторая — добавить ключ не в ту службу, когда на сервере установлено несколько версий платформы и работают несколько агентов. Третья — несовпадение протокола: на сервере включён TCP, а в конфигураторе выбран HTTP, или наоборот.

Типичные ошибки
01
Ключ добавлен, но служба не перезапущена — отладка не включается, признаков ошибки нет
02
Ключ добавлен в службу другой версии платформы — отлаживаемый кластер остался без -debug
03
Не включены предметы отладки в конфигураторе — серверные точки останова неактивны даже при работающем ключе
04
Несовпадение протоколов TCP/HTTP между сервером и конфигуратором — подключение отладчика не устанавливается
05
Опечатка или ключ внутри кавычек пути в ImagePath — служба не стартует или игнорирует параметр

Ещё одна неочевидная ситуация: брандмауэр блокирует порт отладки. Для TCP-протокола убедитесь, что порт отладки агента доступен с машины разработчика. Для HTTP проверьте, что публикация на веб-сервере разрешает отладку и что адрес указан без ошибок.

Итог

Что важно запомнить

Серверная отладка в 1С 8.3 включается ключом -debug в параметрах запуска агента сервера с обязательным перезапуском службы. Дополнительно нужно выбрать протокол (предпочтительно HTTP) и включить предметы отладки в конфигураторе. На продуктиве режим используют кратковременно, основную отладку ведут на тестовой копии.

Частые вопросы

Почему точка останова в серверном модуле отображается с восклицательным знаком?

Такой маркер означает, что точка не может быть установлена: либо серверная отладка не включена на кластере, либо предмет отладки «Сервер» отключён в конфигураторе, либо модуль скомпилирован в другом контексте. Проверьте ключ -debug в строке запуска службы, перезапуск службы и список предметов отладки.

Нужно ли перезапускать службу после добавления ключа -debug?

Да, обязательно. Параметры запуска читаются агентом только при старте процесса. Изменение ImagePath в реестре само по себе ничего не меняет, пока служба не остановлена и не запущена заново.

Можно ли отлаживать регламентные задания на сервере?

Можно. Включите предмет отладки для фоновых заданий, затем в окне «Отладка» → «Подключение» найдите процесс фонового задания и подключитесь к нему. Учтите, что задание стартует по расписанию — точки останова нужно поставить заранее.

Чем опасен включённый режим отладки на продуктивном сервере?

Код исполняется медленнее, а остановка на точке останова блокирует вызовы того же кода из других сеансов — пользователи «повисают». Кроме того, открытый канал отладки — потенциальный вектор несанкционированного доступа. После диагностики ключ следует убрать и перезапустить службу.

Как включить отладку, если на сервере несколько версий платформы?

Определите, какой агент обслуживает нужный кластер — по порту в свойствах кластера или по имени службы, где указана версия. Ключ -debug добавляйте именно в строку запуска этого агента. Добавление ключа в службу другой версии не даст эффекта.

Работает ли серверная отладка через интернет или VPN?

С протоколом TCP — затруднительно из-за требования прямого доступа к порту отладки. С протоколом HTTP или HTTPS отладка через веб-сервер работает, если публикация настроена корректно и разрешён отладочный доступ. Для удалённых сценариев выбирайте HTTP и защищённое соединение.