Администрирование · 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 остаётся актуальным для старых релизов и в простых локальных сценариях, когда конфигуратор и сервер находятся в одной сети без ограничений. Протокол выбирается в конфигураторе: меню «Сервис» → «Параметры» → вкладка «Отладка».
Сравнение вариантов
Подходит для старых версий платформы и простой локальной сети. Ограничение: требует прямого сетевого доступа к порту отладки агента, проблематичен через NAT и VPN.
Рекомендуемый вариант для актуальных версий. Работает через публикацию на веб-сервере или напрямую через кластер, поддерживает отладку веб-клиента и мобильных клиентов. Требует корректной настройки адреса отладки.
Используется, когда трафик должен быть зашифрован, например при отладке через интернет. Требует настроенного сертификата на веб-сервере.
Включение отладки через службу 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С через оснастку services.msc
- 2Откройте реестр и найдите ветку службы агента в HKLM\SYSTEM\CurrentControlSet\Services
- 3В параметре ImagePath добавьте в конец строки запуска ключ -debug (для HTTP-отладки — также флаг протокола HTTP)
- 4Сохраните изменения и запустите службу заново
- 5В конфигураторе выберите протокол отладки и включите предметы отладки
- 6Проверьте подключение: запустите отладку и убедитесь, что серверные точки останова активны
Обратите внимание на кавычки в ImagePath: путь к ragent.exe заключён в кавычки, а ключи идут после закрывающей кавычки. Не нарушайте структуру строки — при ошибке служба просто не запустится.
Включение отладки на Linux и при запуске из командной строки
На Linux-сервере агент обычно запускается через systemd-юнит или скрипт. Параметры запуска задаются в файле юнита (директива ExecStart) или в переменных окружения, которые подхватывает скрипт запуска. Добавьте -debug в строку запуска ragent и перезапустите юнит: systemctl restart с именем службы агента.
Если сервер запускается вручную из командной строки (что типично для тестовых стендов), достаточно добавить ключ в команду запуска:
/opt/1cv8/x86_64/current/ragent -debug
Для тестового контура удобно держать отдельный скрипт запуска с отладкой, чтобы не менять основной. При ручном запуске помните, что процесс привязан к сессии — при закрытии терминала агент остановится, если не использовать nohup или screen.
systemctl edit srv1cv8 --full # добавить -debug в ExecStart, затем: systemctl daemon-reload && systemctl restart srv1cv8Настройка конфигуратора и предметов отладки
Включённый на сервере режим отладки — только половина дела. В конфигураторе откройте «Отладка» → «Предметы отладки» и отметьте типы кодов, которые нужно отлаживать: сервер, фоновые задания, внешние соединения, HTTP-сервисы. По умолчанию часть предметов отключена, и это вторая по частоте причина «неработающих» точек останова.
При использовании протокола HTTP укажите адрес отладки в настройках информационной базы или в параметрах конфигуратора. Для базы, опубликованной на веб-сервере, это адрес публикации с суффиксом отладочного ресурса. Убедитесь, что в свойствах публикации разрешена отладка (параметр debug в файле default.vrd).
Для отладки регламентных и фоновых заданий включите соответствующий предмет отладки и учтите: фоновое задание может стартовать в другом рабочем процессе. В окне «Подключение» конфигуратора вручную подключите нужный процесс, если автоматическое подключение не сработало.
Проверка результата и контрольные точки
Быстрая проверка: откройте конфигуратор, поставьте точку останова в серверной процедуре общего модуля и запустите отладку (F5). Вызовите эту процедуру из клиентского приложения. Если исполнение остановилось на точке — серверная отладка работает.
Дополнительно проверьте список подключённых предметов отладки: меню «Отладка» → «Подключение». В списке должны присутствовать процессы с типом «Сервер». Если список пуст или содержит только клиентский процесс — ключ не применился или протокол настроен неверно.
Как проверить результат
Присутствуют процессы с типом «Сервер»
Только клиентский процесс — ключ -debug не применился
Точка активна (сплошной маркер), исполнение останавливается
Точка с восклицательным знаком или исполнение проходит мимо
В ImagePath присутствует ключ -debug
Ключ отсутствует или опечатка в его написании
Риски, ограничения и типичные ошибки
Режим отладки снижает производительность кластера и открывает дополнительный канал подключения к серверу. На продуктивном контуре с реальными пользователями включайте отладку только на время диагностики и выключайте сразу после. Правильная практика — воспроизводить проблему на копии базы в тестовом кластере.
Самая частая ошибка — забыть перезапустить службу после правки реестра. Вторая — добавить ключ не в ту службу, когда на сервере установлено несколько версий платформы и работают несколько агентов. Третья — несовпадение протокола: на сервере включён TCP, а в конфигураторе выбран HTTP, или наоборот.
Ещё одна неочевидная ситуация: брандмауэр блокирует порт отладки. Для TCP-протокола убедитесь, что порт отладки агента доступен с машины разработчика. Для HTTP проверьте, что публикация на веб-сервере разрешает отладку и что адрес указан без ошибок.
Что важно запомнить
Серверная отладка в 1С 8.3 включается ключом -debug в параметрах запуска агента сервера с обязательным перезапуском службы. Дополнительно нужно выбрать протокол (предпочтительно HTTP) и включить предметы отладки в конфигураторе. На продуктиве режим используют кратковременно, основную отладку ведут на тестовой копии.
Частые вопросы
Почему точка останова в серверном модуле отображается с восклицательным знаком?
Такой маркер означает, что точка не может быть установлена: либо серверная отладка не включена на кластере, либо предмет отладки «Сервер» отключён в конфигураторе, либо модуль скомпилирован в другом контексте. Проверьте ключ -debug в строке запуска службы, перезапуск службы и список предметов отладки.
Нужно ли перезапускать службу после добавления ключа -debug?
Да, обязательно. Параметры запуска читаются агентом только при старте процесса. Изменение ImagePath в реестре само по себе ничего не меняет, пока служба не остановлена и не запущена заново.
Можно ли отлаживать регламентные задания на сервере?
Можно. Включите предмет отладки для фоновых заданий, затем в окне «Отладка» → «Подключение» найдите процесс фонового задания и подключитесь к нему. Учтите, что задание стартует по расписанию — точки останова нужно поставить заранее.
Чем опасен включённый режим отладки на продуктивном сервере?
Код исполняется медленнее, а остановка на точке останова блокирует вызовы того же кода из других сеансов — пользователи «повисают». Кроме того, открытый канал отладки — потенциальный вектор несанкционированного доступа. После диагностики ключ следует убрать и перезапустить службу.
Как включить отладку, если на сервере несколько версий платформы?
Определите, какой агент обслуживает нужный кластер — по порту в свойствах кластера или по имени службы, где указана версия. Ключ -debug добавляйте именно в строку запуска этого агента. Добавление ключа в службу другой версии не даст эффекта.
Работает ли серверная отладка через интернет или VPN?
С протоколом TCP — затруднительно из-за требования прямого доступа к порту отладки. С протоколом HTTP или HTTPS отладка через веб-сервер работает, если публикация настроена корректно и разрешён отладочный доступ. Для удалённых сценариев выбирайте HTTP и защищённое соединение.