Администрирование · 10 мин
Как включить режим отладки в 1С 8.3 на сервере
Пошаговая инструкция по включению режима отладки на сервере 1С 8.3: параметр -debug, перезапуск службы, отладка по HTTP, типичные ошибки и проверка результата.
Отладка серверного кода — одна из базовых задач администратора и разработчика 1С. В клиент-серверном варианте работы весь код, выполняемый в серверных процедурах и функциях, исполняется рабочими процессами сервера 1С:Предприятия, и подключиться к нему из конфигуратора можно только тогда, когда сервер запущен в режиме отладки. Без этого точки останова в серверных модулях просто игнорируются.
Режим отладки включается не в конфигураторе и не в консоли кластера, а через параметр запуска службы агента сервера 1С. Способ зависит от операционной системы: в Windows параметр прописывается в свойствах службы или в реестре, в Linux — в скрипте запуска или unit-файле systemd. Дополнительно начиная с платформы 8.3.7 доступна отладка по протоколу HTTP, которая работает через сервер отладки и не требует прямого сетевого доступа к рабочим процессам.
Ниже разобраны оба варианта настройки, проверка результата, типичные ошибки и ограничения, о которых нужно помнить, прежде чем включать отладку на продуктивном сервере.
Что даёт режим отладки и когда он нужен
В клиент-серверном режиме конфигуратор может отлаживать два типа кода: клиентский (выполняется на компьютере пользователя) и серверный (выполняется в рабочих процессах rphost на сервере). Клиентская часть отлаживается всегда, а вот серверная — только если агент сервера запущен с ключом отладки. Именно поэтому типичный симптом «точка останова не срабатывает» почти всегда означает, что сервер запущен без этого параметра.
Режим отладки нужен при поиске ошибок в серверных процедурах, фоновых заданиях, регламентных операциях, обменах данными и веб-сервисах. Без него невозможно пошагово пройти код, посмотреть значения переменных и стек вызовов для серверного контекста.
Подготовка: что проверить перед включением
Перед изменением параметров службы убедитесь, что у вас есть права администратора на сервере и возможность перезапустить службу агента сервера 1С. Перезапуск службы разрывает все активные сеансы пользователей, поэтому на продуктивном сервере работу планируют на время минимальной нагрузки и заранее предупреждают пользователей.
Также уточните версию платформы. Отладка по TCP (классическая) работает во всех версиях 8.3, отладка по HTTP доступна начиная с платформы 8.3.7. Если клиент и сервер находятся в разных сетях или между ними есть брандмауэр, вариант с HTTP обычно удобнее, так как не требует открывать диапазон портов отладки рабочих процессов.
Включение отладки на сервере Windows
В Windows агент сервера 1С работает как служба, и параметры её запуска хранятся в реестре. Откройте редактор реестра и найдите ветку службы агента: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (точное имя зависит от разрядности и порта агента, например может содержать «(x86-64)» и номер порта).
В параметре ImagePath находится строка запуска исполняемого файла ragent.exe. Добавьте в конец строки, перед закрывающей кавычкой или после неё в зависимости от структуры, ключ -debug. Для отладки по HTTP добавьте -debug -http. После правки реестра перезапустите службу через оснастку «Службы» или командной строкой.
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"Альтернативный способ для разовой диагностики — остановить службу и запустить агент вручную из командной строки с нужными ключами: ragent.exe -debug с остальными параметрами, скопированными из ImagePath. Такой запуск действует до закрытия окна консоли и не меняет постоянную конфигурацию службы.
- 1Остановите службу агента сервера 1С, предупредив пользователей
- 2Откройте реестр и найдите ветку службы агента в CurrentControlSet\Services
- 3В параметре ImagePath добавьте ключ -debug (или -debug -http для отладки по HTTP)
- 4Сохраните изменения и запустите службу
- 5В конфигураторе откройте Отладка → Подключение и проверьте, что видны серверные предметы отладки
Включение отладки на сервере Linux
В Linux параметры запуска агента задаются в скрипте запуска или в unit-файле systemd, в зависимости от способа установки. При классической установке параметры обычно находятся в файле /etc/sysconfig/srv1cv83 или в самом init-скрипте: там определяется переменная с аргументами запуска, например SRV1CV8_KEYTABFILE и строка аргументов демона.
Добавьте в строку аргументов ключ -debug, а для HTTP-отладки — -debug -http. Если используется systemd, отредактируйте unit-файл командой systemctl edit srv1cv83 или напрямую, изменив директиву ExecStart, затем выполните systemctl daemon-reload и перезапустите службу.
sudo systemctl daemon-reload
sudo systemctl restart srv1cv83
ps aux | grep ragent | grep debugПоследняя команда в примере проверяет, что процесс ragent действительно запущен с ключом отладки — это самый быстрый способ убедиться, что изменения применились.
Настройка подключения в конфигураторе
После перезапуска сервера откройте конфигуратор, перейдите в меню «Отладка» → «Подключение». Если автоматическое подключение не настроено, включите в свойствах отладки («Отладка» → «Настройка») поиск предметов отладки и перезапустите клиентское приложение в режиме отладки через «Начать отладку».
В окне подключения должны появиться предметы отладки с типами «Сервер», «Фоновое задание» и другие, связанные с рабочими процессами. Отметьте нужные и подключитесь. Если серверные предметы отсутствуют в списке — сервер запущен без ключа отладки либо между конфигуратором и сервером закрыты нужные порты.
Для отладки по HTTP дополнительно укажите в настройках отладки адрес сервера отладки (dbgs), который разворачивается отдельно или используется через веб-сервер, и в параметрах информационной базы задайте использование HTTP-протокола отладки. Этот вариант также позволяет отлаживать код через публикацию на веб-сервере, что удобно для мобильных клиентов и веб-клиента.
Как проверить результат
Видны предметы с типом «Сервер» и фоновые задания
Только клиентские предметы, серверных нет
Выполнение останавливается, доступны переменные
Точка останова отображается как недоступная и игнорируется
В командной строке процесса присутствует -debug
Ключ отсутствует — изменения не применились
Отладка фоновых заданий и веб-сервисов
Фоновые и регламентные задания выполняются на сервере без привязки к сеансу пользователя, поэтому их отладка возможна только при включённом серверном режиме отладки. В окне подключения предметы отладки фоновых заданий появляются в момент их запуска; чтобы успеть подключиться, включите в настройках отладки флажок автоматического подключения к фоновым заданиям.
Для отладки веб-сервисов и HTTP-сервисов вызов должен прийти на рабочий процесс, к которому подключён отладчик. На практике это означает: отладка включена на сервере, конфигуратор подключён, и в настройках отладки разрешён поиск предметов отладки для веб-сервисов. Точку останова ставят в модуле сервиса, после чего выполняют тестовый вызов.
Типичные ошибки и ограничения
Самая частая ошибка — ключ добавлен не в ту строку запуска или служба не была перезапущена, поэтому процесс продолжает работать со старыми параметрами. Вторая по частоте проблема — сетевые ограничения: при классической TCP-отладке конфигуратор должен иметь доступ к портам рабочих процессов сервера, и брандмауэр может молча блокировать подключение.
Отдельно стоит помнить о безопасности и производительности. Сервер в режиме отладки работает медленнее, а возможность подключения отладчика к исполняемому коду — потенциальный вектор доступа к данным. На продуктивных системах режим отладки следует включать только на время диагностики и строго контролировать, кто имеет доступ к серверу.
Что важно запомнить
Режим отладки сервера включается ключом -debug в параметрах запуска агента сервера 1С с последующим перезапуском службы. Для версий от 8.3.7 доступна отладка по HTTP, удобная при сетевых ограничениях. Проверяйте результат по списку предметов отладки в конфигураторе и не оставляйте режим включённым на продуктивном сервере.
Частые вопросы
Почему точка останова в серверной процедуре не срабатывает?
Чаще всего сервер запущен без ключа -debug или служба не перезапускалась после изменения параметров. Также проверьте, что в конфигураторе подключён предмет отладки с типом «Сервер» и что сеанс попадает в тот рабочий процесс, к которому подключён отладчик.
Можно ли включить отладку без перезапуска службы сервера?
Нет, параметр -debug применяется только при старте процесса агента. Перезапуск службы обязателен, поэтому на продуктивном сервере работу планируют с учётом разрыва активных сеансов пользователей.
Чем отладка по HTTP лучше классической по TCP?
HTTP-отладка работает через отдельный сервер отладки и не требует прямого доступа конфигуратора к портам рабочих процессов. Это упрощает отладку через брандмауэры, при работе с веб-клиентом и при публикации базы на веб-сервере. Минус — необходимость развернуть и настроить сервер отладки dbgs.
Влияет ли режим отладки на производительность?
Да, рабочие процессы в режиме отладки выполняют код медленнее и потребляют больше ресурсов. Поэтому на продуктивных серверах отладку включают только на время поиска проблемы и отключают сразу после завершения диагностики.
Как отладить регламентное задание, которое выполняется по расписанию?
Включите серверный режим отладки, в настройках отладки конфигуратора разрешите автоматическое подключение к фоновым заданиям и поставьте точку останова в модуле задания. При следующем запуске по расписанию конфигуратор подключится к заданию и остановит выполнение.
Нужны ли особые права для подключения отладчика?
Пользователь, от имени которого запущен конфигуратор, должен обладать правами администратора информационной базы или кластера в зависимости от настроек безопасности. Для отладки по HTTP дополнительно могут потребоваться учётные данные для доступа к серверу отладки.