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

Администрирование · 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. После правки реестра перезапустите службу через оснастку «Службы» или командной строкой.

powershell
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

Альтернативный способ для разовой диагностики — остановить службу и запустить агент вручную из командной строки с нужными ключами: ragent.exe -debug с остальными параметрами, скопированными из ImagePath. Такой запуск действует до закрытия окна консоли и не меняет постоянную конфигурацию службы.

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

Включение отладки на сервере Linux

В Linux параметры запуска агента задаются в скрипте запуска или в unit-файле systemd, в зависимости от способа установки. При классической установке параметры обычно находятся в файле /etc/sysconfig/srv1cv83 или в самом init-скрипте: там определяется переменная с аргументами запуска, например SRV1CV8_KEYTABFILE и строка аргументов демона.

Добавьте в строку аргументов ключ -debug, а для HTTP-отладки — -debug -http. Если используется systemd, отредактируйте unit-файл командой systemctl edit srv1cv83 или напрямую, изменив директиву ExecStart, затем выполните systemctl daemon-reload и перезапустите службу.

bash
sudo systemctl daemon-reload
sudo systemctl restart srv1cv83
ps aux | grep ragent | grep debug

Последняя команда в примере проверяет, что процесс ragent действительно запущен с ключом отладки — это самый быстрый способ убедиться, что изменения применились.

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

После перезапуска сервера откройте конфигуратор, перейдите в меню «Отладка» → «Подключение». Если автоматическое подключение не настроено, включите в свойствах отладки («Отладка» → «Настройка») поиск предметов отладки и перезапустите клиентское приложение в режиме отладки через «Начать отладку».

В окне подключения должны появиться предметы отладки с типами «Сервер», «Фоновое задание» и другие, связанные с рабочими процессами. Отметьте нужные и подключитесь. Если серверные предметы отсутствуют в списке — сервер запущен без ключа отладки либо между конфигуратором и сервером закрыты нужные порты.

Для отладки по HTTP дополнительно укажите в настройках отладки адрес сервера отладки (dbgs), который разворачивается отдельно или используется через веб-сервер, и в параметрах информационной базы задайте использование HTTP-протокола отладки. Этот вариант также позволяет отлаживать код через публикацию на веб-сервере, что удобно для мобильных клиентов и веб-клиента.

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

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

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

Видны предметы с типом «Сервер» и фоновые задания

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

Только клиентские предметы, серверных нет

Срабатывание точки останова в серверной процедуре
Норма

Выполнение останавливается, доступны переменные

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

Точка останова отображается как недоступная и игнорируется

Параметры процесса агента (Linux) или ImagePath (Windows)
Норма

В командной строке процесса присутствует -debug

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

Ключ отсутствует — изменения не применились

Отладка фоновых заданий и веб-сервисов

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

Для отладки веб-сервисов и HTTP-сервисов вызов должен прийти на рабочий процесс, к которому подключён отладчик. На практике это означает: отладка включена на сервере, конфигуратор подключён, и в настройках отладки разрешён поиск предметов отладки для веб-сервисов. Точку останова ставят в модуле сервиса, после чего выполняют тестовый вызов.

Типичные ошибки и ограничения

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

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

Типичные ошибки
01
Ключ -debug добавлен в реестр, но служба не перезапущена — процесс работает со старыми параметрами и отладка недоступна
02
Отладка оставлена включённой на продуктивном сервере — снижается производительность и растёт риск несанкционированного подключения к коду
03
Точка останова поставлена в клиентской процедуре вместо серверной — код выполняется на клиенте, а разработчик ждёт остановки на сервере
04
При нескольких рабочих процессах сеанс попадает в процесс без подключённого отладчика — точка останова не срабатывает
05
Брандмауэр блокирует порты отладки при TCP-подключении — конфигуратор не видит серверные предметы отладки
Итог

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

Режим отладки сервера включается ключом -debug в параметрах запуска агента сервера 1С с последующим перезапуском службы. Для версий от 8.3.7 доступна отладка по HTTP, удобная при сетевых ограничениях. Проверяйте результат по списку предметов отладки в конфигураторе и не оставляйте режим включённым на продуктивном сервере.

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

Почему точка останова в серверной процедуре не срабатывает?

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

Можно ли включить отладку без перезапуска службы сервера?

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

Чем отладка по HTTP лучше классической по TCP?

HTTP-отладка работает через отдельный сервер отладки и не требует прямого доступа конфигуратора к портам рабочих процессов. Это упрощает отладку через брандмауэры, при работе с веб-клиентом и при публикации базы на веб-сервере. Минус — необходимость развернуть и настроить сервер отладки dbgs.

Влияет ли режим отладки на производительность?

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

Как отладить регламентное задание, которое выполняется по расписанию?

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

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

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