Администрирование · 11 мин
Как включить отладку на сервере 1С
Как включить отладку на сервере 1С:Предприятие 8.3: параметр -debug для службы агента, настройка конфигуратора, отладка HTTP-сервисов и типичные ошибки.
Отладка серверного кода в 1С:Предприятие 8.3 не работает «из коробки»: сервер приложений по умолчанию запускается без поддержки отладки, и конфигуратор не сможет подключиться к серверным процедурам и функциям. Чтобы исправить это, нужно перезапустить службу агента сервера 1С со специальным параметром -debug и правильно настроить конфигуратор на стороне разработчика.
Типичный признак того, что отладка на сервере выключена: точки останова в серверных модулях подсвечиваются как недоступные, а попытка подключить предмет отладки завершается сообщением «Отладка на сервере не разрешена» или «Сервер 1С:Предприятия не поддерживает отладку». Это не ошибка конфигурации, а штатное поведение — параметр включается вручную администратором сервера.
Материал рассчитан на клиент-серверный вариант работы с СУБД (MS SQL, PostgreSQL и другие). Для файлового режима отдельная настройка сервера не требуется — там достаточно включить отладку в конфигураторе. Ниже разобраны способы включения параметра -debug в Windows и Linux, настройка конфигуратора, особенности отладки веб-сервисов и проверка результата.
Что даёт параметр -debug и когда он нужен
В клиент-серверном режиме код делится на клиентский и серверный. Клиентская часть отлаживается автоматически при запуске отладки из конфигуратора. Серверный код — процедуры с директивой &НаСервере, серверные общие модули, обработчики регламентных заданий, код веб-сервисов и HTTP-сервисов — выполняется в рабочих процессах rphost на сервере приложений и недоступен отладчику, пока сервер не запущен в отладочном режиме.
Параметр -debug заставляет агент сервера запускать рабочие процессы с поддержкой протокола отладки. Без него отладчик не видит серверные предметы отладки в принципе — это не вопрос прав доступа или настроек конфигуратора, а режим работы самого сервера.
Включать отладочный режим стоит на тестовых и разработческих серверах. На продуктивном сервере держать -debug постоянно включённым не рекомендуется: режим снижает производительность рабочих процессов и теоретически расширяет поверхность атаки, так как открывает дополнительный канал взаимодействия с процессами сервера.
Включение отладки на сервере Windows
Самый распространённый способ — правка параметра запуска службы агента сервера через реестр. Служба называется «Агент сервера 1С:Предприятия 8.3» (1C:Enterprise 8.3 Server Agent), а её параметры запуска хранятся в ветке реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent — точное имя ветки зависит от версии и номера порта агента.
Порядок действий следующий. Откройте редактор реестра, найдите ветку службы и параметр ImagePath — в нём указана полная строка запуска исполняемого файла ragent.exe с перечнем ключей. Добавьте в конец строки ключ -debug, сохраните изменение и перезапустите службу через оснастку «Службы» или командой net stop / net start.
"C:\Program Files\1cv8\8.3.22.1750\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debugАльтернатива без правки реестра — утилита sc.exe с параметром binpath, но при её использовании легко ошибиться в экранировании кавычек и пробелов, поэтому для разового изменения правка ImagePath надёжнее. После перезапуска службы убедитесь, что агент стартовал и рабочие процессы поднялись — это видно в консоли кластера серверов.
Включение отладки на сервере Linux
На Linux агент сервера запускается скриптом srv1cv8, который обычно находится в каталоге /opt/1cv8/x86_64/<версия>/ или управляется через systemd-юнит. Параметры запуска вынесены в конфигурационный файл /etc/sysconfig/srv1cv8 (для RPM-based систем) или аналогичный файл переменных окружения.
Откройте конфигурационный файл и добавьте -debug в переменную, содержащую аргументы запуска агента (обычно это SRV1CV8_KEYTAB_FILE-соседние параметры или строка аргументов ragent). Затем перезапустите службу: systemctl restart srv1cv8 для systemd или service srv1cv8 restart для sysvinit.
systemctl restart srv1cv8-8.3.22-1750 && systemctl status srv1cv8-8.3.22-1750Если сервер запускается вручную из командной строки (что бывает на стендах разработки), просто добавьте -debug в строку запуска ragent. Проверить, что параметр применился, можно через список процессов: ps aux | grep ragent — в выводе должна быть видна строка запуска с ключом отладки.
Настройка конфигуратора для серверной отладки
Включённого параметра на сервере недостаточно — конфигуратор должен знать, как подключаться к отладочным процессам. Откройте в конфигураторе меню «Сервис → Параметры» и перейдите на вкладку «Отладка». Убедитесь, что выбран протокол отладки «Отладка по протоколу TCP/IP» — устаревший вариант по HTTP требует отдельной публикации через веб-сервер и сейчас практически не используется.
Там же проверьте настройку «Искать предметы отладки на удалённом компьютере»: если сервер 1С расположен не на машине разработчика, укажите имя или IP-адрес сервера. Порт отладки по умолчанию совпадает с портом агента кластера, но при нестандартной конфигурации его можно задать явно.
Далее запустите отладку (F5) или подключитесь к уже работающему сеансу через «Отладка → Подключение». В окне подключения установите флажки напротив нужных типов предметов отладки: «Сервер», «Фоновое задание», «HTTP-сервис», «WS-сервис». Если нужный тип недоступен, конфигуратор покажет причину — чаще всего это как раз отключённый -debug на сервере.
- 1Остановите службу агента сервера 1С, предупредив пользователей
- 2Добавьте параметр -debug в строку запуска ragent (ImagePath в реестре или конфиг srv1cv8 в Linux)
- 3Перезапустите службу и проверьте, что кластер поднялся
- 4В конфигураторе включите отладку по TCP/IP и укажите адрес сервера
- 5Запустите отладку и поставьте точку останова в серверном модуле
- 6Проверьте, что точка останова активна и выполнение останавливается
Отладка регламентных заданий, веб- и HTTP-сервисов
Фоновые и регламентные задания выполняются на сервере вне пользовательских сеансов, поэтому их отладка требует ручного подключения. После включения -debug откройте «Отладка → Подключение», в списке предметов отладки появятся активные фоновые задания. Выберите нужное и подключитесь — точки останова в коде задания начнут срабатывать.
Для HTTP-сервисов и веб-сервисов, опубликованных на веб-сервере, есть нюанс: по умолчанию расширение веб-сервера обрабатывает запросы без отладки. Чтобы отладить сервис, включите в конфигураторе режим «Отладка → Отладка HTTP-сервисов → Автоматическое подключение» либо добавьте в URL запроса параметр, инициирующий отладочный сеанс. В файле публикации default.vrd для отладки сервисов может потребоваться элемент <debug> с параметрами подключения.
Проверка результата и типичные ошибки
Признак успешной настройки — активные точки останова в серверном коде: они отображаются сплошным кружком, а не перечёркнутым или пустым значком. При выполнении серверного вызова конфигуратор останавливается на точке, доступны стек вызовов, значения переменных и табло.
Как проверить результат
Сплошной красный кружок, выполнение останавливается
Перечёркнутая точка и сообщение о недоступности отладки
В списке доступен тип предмета «Сервер»
Тип «Сервер» отсутствует или помечен как недоступный
В ImagePath или ps aux виден ключ -debug
Ключ отсутствует — служба запущена без отладки
Если отладка всё равно не работает, проверяйте по порядку: совпадает ли версия платформы конфигуратора и сервера (значительное расхождение версий мешает подключению), перезапускали ли службу после правки строки запуска, не блокирует ли межсетевой экран порты кластера и отладки, правильно ли указан адрес сервера в параметрах конфигуратора.
Ограничения и безопасная практика
Отладочный режим не должен быть постоянным состоянием продуктивного сервера. Остановка на точке останова в серверном коде блокирует рабочий процесс, а значит — и все сеансы, которые он обслуживает: пользователи «подвиснут» до продолжения выполнения. На многопользовательской базе это заметно сразу.
Правильная практика — выделенный тестовый сервер или отдельный кластер для разработки, где -debug включён постоянно, а на продуктиве параметр добавляется только на время диагностики конкретной проблемы и убирается сразу после. Если отладить проблему на продуктиве нельзя, воспроизведите её на копии базы.
Что важно запомнить
Серверная отладка включается параметром -debug в строке запуска агента сервера 1С с последующим перезапуском службы. Дополнительно настройте конфигуратор (TCP/IP, адрес сервера, автоподключение) и не оставляйте отладочный режим включённым на продуктивном сервере.
Частые вопросы
Почему точка останова в серверном модуле перечёркнута?
Перечёркнутая точка означает, что предмет отладки недоступен. Чаще всего сервер запущен без параметра -debug либо служба не перезапускалась после его добавления. Также проверьте, что в конфигураторе выбран протокол отладки TCP/IP и верно указан адрес сервера.
Нужно ли включать отладку для файловой базы?
Нет. В файловом режиме весь код выполняется в процессе клиентского приложения, и отладка работает сразу после запуска по F5 из конфигуратора. Параметр -debug относится только к агенту сервера в клиент-серверном варианте.
Можно ли отлаживать код без перезапуска службы агента?
Нет, параметр -debug читается только при старте агента сервера. Перезапуск службы обязателен, поэтому планируйте работы с учётом обрыва активных сеансов пользователей.
Как отладить регламентное задание, которое выполняется раз в час?
Включите -debug на сервере, в конфигураторе настройте автоматическое подключение к фоновым заданиям («Отладка → Подключение → Автоматическое подключение») и дождитесь запуска задания — отладчик подключится к нему автоматически. Для ускорения можно вручную инициировать выполнение задания через консоль кластера или обработку запуска.
Влияет ли режим отладки на производительность сервера?
Да, запуск рабочих процессов с поддержкой отладки добавляет накладные расходы, а остановка на точке останова блокирует весь рабочий процесс вместе с обслуживаемыми сеансами. Поэтому на продуктивных серверах отладочный режим включают только на время диагностики.
Что делать, если на сервере установлено несколько версий платформы?
Определите, с какой версией работает нужная информационная база (это видно в консоли кластера), и добавьте -debug именно в службу агента этой версии. В реестре у каждой версии своя ветка службы с собственным ImagePath.