Администрирование · 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 — лишняя кавычка или потерянный пробел ломают запуск.
Альтернатива: запуск агента из командной строки
Для разового тестирования можно не менять реестр: остановите службу и запустите агент вручную из командной строки с нужными ключами. Это удобно на тестовом стенде, но после закрытия окна консоли агент остановится.
"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Предупредите пользователей и завершите активные сеансы
- 2Определите имя службы агента и версию платформы
- 3Добавьте параметр -debug в команду запуска агента (реестр в Windows, переменная окружения в Linux)
- 4Перезапустите службу агента сервера
- 5Убедитесь, что служба запустилась и кластер доступен
- 6В конфигураторе включите отладку и подключитесь к серверному предмету отладки
Настройка конфигуратора для подключения к серверу
Включённый режим на сервере — только половина задачи. В конфигураторе откройте меню «Отладка» → «Подключение» и убедитесь, что в списке доступных предметов отладки появляются серверные процессы нужной информационной базы.
Проверьте настройки протокола: «Сервис» → «Параметры» → вкладка с параметрами отладки. Протокол в конфигураторе должен совпадать с протоколом, указанным при запуске агента. Если на сервере включён HTTP, а в конфигураторе выбран TCP, подключение не установится.
Для отладки фоновых заданий включите в конфигураторе автоматическое подключение к фоновым заданиям: «Отладка» → «Подключение» → «Автоматическое подключение». Там же отметьте нужные типы предметов отладки — сервер, фоновые задания, веб-сервисы.
Выбор протокола отладки: HTTP или TCP
Платформа поддерживает два протокола отладки. TCP — устаревший вариант, при котором отладчик подключается напрямую к рабочим процессам кластера, и для каждого процесса используется отдельный порт из диапазона. HTTP — современный протокол через выделенный сервер отладки dbgs с единой точкой подключения.
Для новых установок рекомендуется HTTP: он проще в настройке сети, корректнее работает при нескольких рабочих процессах и не требует открытия диапазона портов. TCP имеет смысл оставлять только для старых версий платформы, где HTTP-отладка ещё не поддерживалась.
Сравнение вариантов
Рекомендуемый вариант для актуальных версий платформы. Одна точка подключения, проще настройка брандмауэра. Требуется запущенный процесс dbgs.
Устаревший вариант для старых версий платформы. Подключение напрямую к рабочим процессам, каждому нужен свой порт из диапазона. Сложнее при нескольких rphost.
Проверка результата и типичные ошибки
Признак успешного включения — в окне подключения конфигуратора появляются серверные предметы отладки вашей базы, а точки останова в серверных модулях начинают срабатывать. Если серверных процессов в списке нет, значит, агент запущен без ключа -debug либо протоколы не совпадают.
Частая ошибка — забыть перезапустить службу после правки реестра: изменения ImagePath применяются только при старте службы. Другая типичная проблема — несколько версий платформы на одном сервере: администратор правит реестр одной службы, а кластер работает под другой.
Также проверьте брандмауэр: при HTTP-отладке должен быть доступен порт сервера отладки, при TCP — диапазон портов рабочих процессов. В корпоративных сетях эти порты часто закрыты по умолчанию.
Ограничения и безопасность
Режим отладки снижает производительность сервера: рабочие процессы выполняют дополнительную работу по взаимодействию с отладчиком. На продуктивной системе это заметно при высокой нагрузке, поэтому после завершения работ отладку следует отключить — убрать параметр и снова перезапустить службу.
Отладка — это потенциальный канал доступа к данным и коду. Не оставляйте сервер в режиме отладки без необходимости и ограничивайте сетевой доступ к портам отладки. Для регулярной диагностики ошибок на продуктиве лучше использовать технологический журнал — он не требует перезапуска службы и работает постоянно.
Что важно запомнить
Отладка на сервере 1С включается параметром -debug в команде запуска агента сервера с последующим перезапуском службы. Протокол в конфигураторе должен совпадать с протоколом сервера, для фоновых заданий нужно автоподключение. После завершения работ режим отладки на продуктивном сервере следует выключить.
Частые вопросы
Можно ли включить отладку без перезапуска службы агента?
Нет. Параметр -debug читается агентом только при запуске, поэтому перезапуск службы обязателен. Чтобы не разрывать сеансы пользователей в рабочее время, планируйте операцию заранее или используйте тестовую копию базы на отдельном сервере.
Точки останова в серверных процедурах не срабатывают. Что проверить?
Проверьте три вещи: агент запущен с ключом -debug, протокол в конфигураторе совпадает с серверным, и в настройках автоподключения отмечен тип «Сервер». Также убедитесь, что код действительно выполняется на сервере, а не в клиентском контексте.
Как отладить фоновое задание на сервере?
В конфигураторе откройте «Отладка» → «Подключение» → «Автоматическое подключение» и отметьте «Фоновые задания». После этого при следующем запуске фонового задания конфигуратор подключится к нему автоматически, и точки останова начнут работать.
Влияет ли режим отладки на производительность?
Да, серверные процессы в режиме отладки работают медленнее из-за обмена данными с отладчиком. На слабо нагруженных системах это почти незаметно, но на продуктивном сервере под нагрузкой режим отладки следует включать только на время диагностики.
Чем заменить отладку, если перезапускать сервер нельзя?
Используйте технологический журнал: он настраивается через файл logcfg.xml без перезапуска службы и позволяет фиксировать ошибки, запросы и длительные операции. Дополнительно можно добавить в код запись в журнал регистрации для трассировки проблемного участка.
Нужна ли отладка на сервере для файловой базы?
Нет. В файловом варианте нет сервера 1С, весь код выполняется в процессе клиентского приложения, и отладка работает без каких-либо дополнительных настроек. Параметр -debug нужен только для клиент-серверного режима работы.