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

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

Как включить отладку на сервере 1С

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

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

Режим отладки включается не в конфигураторе, а на уровне агента сервера 1С:Предприятия — службы, которая управляет кластером. Агент запускается с параметром -debug, после чего серверные процессы начинают принимать подключения отладчика. Это касается и Windows, и Linux, но способ задания параметра отличается.

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

Что нужно проверить перед включением отладки

Перед изменением параметров службы убедитесь, что у вас есть права администратора на сервере, где работает агент 1С. Без них вы не сможете изменить реестр, конфигурацию службы или перезапустить её.

Определите версию платформы и разрядность сервера — от этого зависит путь к исполняемым файлам и имя службы. Имя службы агента в Windows обычно имеет вид «Агент сервера 1С:Предприятия 8.3 (x86-64)» с указанием номера версии.

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

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

Самый надёжный способ в Windows — изменить команду запуска службы агента сервера. Откройте редактор реестра и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services, затем найдите подраздел вашей службы агента (имя обычно начинается с «1C:Enterprise 8.3 Server Agent»).

В этом разделе найдите строковый параметр ImagePath — он содержит полную команду запуска агента. Добавьте в конец строки параметр -debug, не удаляя существующие параметры. Для протокола HTTP дополнительно укажите -debugProtocol http (в новых версиях это значение по умолчанию).

После правки реестра откройте оснастку «Службы» (services.msc), найдите службу агента сервера и перезапустите её. Если служба не стартует, проверьте синтаксис строки ImagePath — лишняя кавычка или потерянный пробел ломают запуск.

Альтернатива: запуск агента из командной строки

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

bat
"C:\Program Files\1cv8\8.3.22.1709\bin\ragent.exe" -srvc -agent -regport 1541 -port 1540 -range 1560:1591 -d "C:\Program Files\1cv8\srvinfo" -debug

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

В Linux агент сервера обычно запускается как systemd-сервис. Параметры отладки задаются через переменные окружения в unit-файле или в файле окружения, который этот unit подключает.

Откройте unit-файл службы (обычно /etc/systemd/system/srv1cv8.service или аналогичный) и добавьте в секцию [Service] строку Environment=SRV1CV8_DEBUG=1. Либо отредактируйте файл окружения, указанный в директиве EnvironmentFile, добавив туда ту же переменную.

После изменения выполните systemctl daemon-reload и перезапустите службу командой systemctl restart srv1cv8. Проверить, что параметр применился, можно через ps aux | grep ragent — в строке процесса или его окружении должен фигурировать режим отладки.

Порядок действий
  1. 1
    Предупредите пользователей и завершите активные сеансы
  2. 2
    Определите имя службы агента и версию платформы
  3. 3
    Добавьте параметр -debug в команду запуска агента (реестр в Windows, переменная окружения в Linux)
  4. 4
    Перезапустите службу агента сервера
  5. 5
    Убедитесь, что служба запустилась и кластер доступен
  6. 6
    В конфигураторе включите отладку и подключитесь к серверному предмету отладки

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

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

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

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

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

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

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

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

Протокол HTTP (dbgs)

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

Протокол TCP

Устаревший вариант для старых версий платформы. Подключение напрямую к рабочим процессам, каждому нужен свой порт из диапазона. Сложнее при нескольких rphost.

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

Признак успешного включения — в окне подключения конфигуратора появляются серверные предметы отладки вашей базы, а точки останова в серверных модулях начинают срабатывать. Если серверных процессов в списке нет, значит, агент запущен без ключа -debug либо протоколы не совпадают.

Частая ошибка — забыть перезапустить службу после правки реестра: изменения ImagePath применяются только при старте службы. Другая типичная проблема — несколько версий платформы на одном сервере: администратор правит реестр одной службы, а кластер работает под другой.

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

Типичные ошибки
01
Забыли перезапустить службу агента — параметр -debug не применился, серверные предметы отладки не появляются
02
В конфигураторе выбран TCP, а на сервере включён HTTP (или наоборот) — подключение не устанавливается
03
Правили реестр не той службы при нескольких установленных версиях платформы
04
Не включили автоподключение к фоновым заданиям — точки останова в фоновых процедурах не срабатывают
05
Оставили режим отладки включённым на продуктивном сервере — лишняя нагрузка и потенциальные риски безопасности

Ограничения и безопасность

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

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

Итог

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

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

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

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

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

Точки останова в серверных процедурах не срабатывают. Что проверить?

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

Как отладить фоновое задание на сервере?

В конфигураторе откройте «Отладка» → «Подключение» → «Автоматическое подключение» и отметьте «Фоновые задания». После этого при следующем запуске фонового задания конфигуратор подключится к нему автоматически, и точки останова начнут работать.

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

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

Чем заменить отладку, если перезапускать сервер нельзя?

Используйте технологический журнал: он настраивается через файл logcfg.xml без перезапуска службы и позволяет фиксировать ошибки, запросы и длительные операции. Дополнительно можно добавить в код запись в журнал регистрации для трассировки проблемного участка.

Нужна ли отладка на сервере для файловой базы?

Нет. В файловом варианте нет сервера 1С, весь код выполняется в процессе клиентского приложения, и отладка работает без каких-либо дополнительных настроек. Параметр -debug нужен только для клиент-серверного режима работы.