Администрирование · 12 мин
Как включить отладку сервера 1С
Как включить отладку сервера 1С: параметр -debug, настройка службы агента, отладка по HTTP и TCP, типичные ошибки и проверка результата.
Отладка на сервере 1С нужна, когда ошибка возникает в серверном коде — в процедурах с директивой «НаСервере», в фоновых заданиях, в web-сервисах или при работе COM-соединений. Без включённого режима отладки конфигуратор просто не остановится на точках останова, расположенных в серверном контексте, и разработчик видит только клиентскую часть исполнения.
Включение отладки сводится к запуску агента сервера 1С (ragent) с параметром -debug и последующему подключению конфигуратора к нужному предмету отладки. Способ задания параметра зависит от операционной системы и от того, как запущен кластер — как служба Windows, как процесс в Linux или через службу агрегирования в тестовой среде.
Важно понимать: режим отладки замедляет работу сервера и увеличивает нагрузку на кластер, поэтому на продуктивных системах его включают временно и только на период поиска проблемы. Ниже разобраны все основные сценарии — от правки службы Windows до отладки по протоколу HTTP в новых версиях платформы.
Что нужно проверить перед включением отладки
Перед изменением параметров службы убедитесь, что у вас есть права администратора на сервере, где работает кластер 1С, и что вы понимаете, какая версия платформы используется. От версии зависит протокол отладки: до платформы 8.3.7 применялся отладочный протокол по TCP, начиная с 8.3.7 доступен отладочный протокол по HTTP, который стал основным в современных версиях.
Также проверьте, что конфигуратор, из которого будет вестись отладка, той же версии платформы, что и сервер. Несовпадение версий — частая причина того, что предметы отладки не отображаются в списке подключения. Если на сервере несколько версий платформы, уточните, под какой именно работает нужная информационная база.
Наконец, определите тип сеанса, который нужно отлаживать: обычный клиентский сеанс, фоновое задание, сеанс web-сервиса или HTTP-сервиса. От этого зависит, какие флажки придётся выставить при подключении предметов отладки.
Ветка HKLM\SYSTEM\CurrentControlSet\Services с именем службы агента
Systemd-юнит или скрипт запуска ragent
Отладка через web-сервер, публикация отладочного интерфейса
Проверить параметр -debug и список подключённых предметов
Включение отладки на сервере Windows через реестр
Самый распространённый сценарий — сервер 1С работает как служба Windows «Агент сервера 1С:Предприятия». Параметры запуска этой службы хранятся в реестре, и именно туда добавляется ключ -debug.
Откройте редактор реестра (regedit) и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Найдите подраздел службы агента — его имя обычно содержит версию платформы, например 1C:Enterprise 8.3 Server Agent с номером версии и портом. Внутри найдите строковый параметр ImagePath — это полная командная строка запуска ragent.exe.
Аккуратно допишите в конец строки параметр -debug через пробел, не удаляя существующие параметры (-srvc, -agent, -regport, -port, -range, -d и другие). Сохраните изменение и перезапустите службу через оснастку services.msc или командой перезапуска. Без перезапуска службы параметр не применится.
- 1Откройте regedit и найдите ветку службы агента сервера 1С в HKLM\SYSTEM\CurrentControlSet\Services
- 2Откройте параметр ImagePath двойным щелчком
- 3Допишите в конец строки параметр -debug через пробел
- 4Сохраните параметр и перезапустите службу агента сервера
- 5В конфигураторе откройте Отладка — Подключение и подключите нужные предметы отладки
Альтернативный способ без правки реестра — остановить службу и запустить ragent.exe вручную из командной строки с нужными параметрами, включая -debug. Это удобно для кратковременной диагностики: после закрытия окна консоли сервер остановится, и службу можно вернуть в штатный режим. Однако при ручном запуске нужно полностью воспроизвести рабочие параметры кластера — порты и каталог реестра кластера.
Включение отладки на сервере Linux
В Linux агент сервера обычно запускается через systemd-юнит или собственный скрипт. Параметр -debug добавляется в строку вызова ragent в файле юнита (директива ExecStart) или в скрипте запуска.
Откройте файл юнита (часто он расположен в /etc/systemd/system/ и называется примерно как srv1cv8.service), найдите строку запуска и допишите -debug к аргументам ragent. После правки выполните перечитывание конфигурации systemd и перезапуск службы.
sudo systemctl daemon-reload && sudo systemctl restart srv1cv8Проверить, что агент запустился с нужным параметром, можно через список процессов: в выводе команды ps aux | grep ragent в строке процесса должен присутствовать -debug. Если параметра нет — либо правился не тот файл, либо служба не была перезапущена.
Отладка по протоколу HTTP через web-сервер
Начиная с платформы 8.3.7, доступен отладочный протокол поверх HTTP. В этом режиме отладочная информация передаётся через тот же канал, что и основное взаимодействие клиента с сервером, что упрощает работу через межсетевые экраны и позволяет отлаживать серверный код при файловом и клиент-серверном варианте через публикацию на web-сервере.
Для отладки по HTTP в клиент-серверном варианте агент всё равно запускается с -debug, но дополнительно на web-сервере публикуется отладочный интерфейс. В диалоге публикации информационной базы на web-сервере (Apache или IIS) на вкладке настроек есть флажок разрешения отладки и выбор протокола — TCP или HTTP. При выборе HTTP указывается адрес отладчика.
В конфигураторе тип протокола переключается через меню «Сервис — Параметры», раздел отладки: там выбирается «Отладка по протоколу HTTP» и при необходимости задаётся адрес и порт локального отладочного интерфейса. После смены настройки конфигуратор нужно перезапустить отладочный сеанс.
Сравнение протоколов отладки
Классический вариант, требует доступности отладочных портов между конфигуратором и сервером; в новых версиях платформы постепенно вытесняется HTTP
Работает через web-сервер и стандартный канал связи, подходит для отладки через интернет и при ограниченных сетевых правилах; требует публикации отладочного интерфейса
Подключение предметов отладки в конфигураторе
Включённый параметр -debug сам по себе ничего не отлаживает — конфигуратор должен подключиться к конкретным предметам отладки. Откройте меню «Отладка — Подключение». В появившемся окне нажмите кнопку подключения и отметьте нужные типы предметов: серверный контекст, фоновые задания, web-сервисы, HTTP-сервисы, внешние соединения.
Для отладки фоновых заданий есть важная особенность: флаг автоматического подключения фоновых заданий включается отдельно в настройках отладки («Сервис — Параметры — Отладка»). Без него конфигуратор не подхватит внезапно стартовавшее фоновое задание, и точка останова в его коде не сработает.
После подключения воспроизведите действие, вызывающее ошибку. Исполнение должно остановиться на установленной точке останова в серверной процедуре. Если остановки нет — проверьте, что точка стоит именно в серверном контексте, что код реально выполняется (а не обходится по условию) и что предмет отладки подключён для нужного типа сеанса.
Как проверить результат
В строке процесса ragent присутствует -debug
Параметра нет — служба не перезапущена или правился не тот раздел реестра
В окне подключения видны серверные сеансы и фоновые задания
Список пуст — отладка не включена или версии платформы не совпадают
Исполнение останавливается, доступен стек вызовов
Точка подсвечена как недостижимая — предмет отладки не подключён
Типичные ошибки и ограничения
Наиболее частая ошибка — правка реестра без перезапуска службы или перезапуск не той службы, когда на сервере установлено несколько версий платформы. Проверяйте, какая именно служба обслуживает рабочий кластер, по номеру порта в имени службы и в консоли кластера.
Вторая группа проблем — сетевые: при отладке по TCP между компьютером разработчика и сервером должны быть доступны отладочные порты кластера. Если соединение блокируется межсетевым экраном, переходите на отладку по HTTP через web-сервер.
Третья типичная ситуация — попытка отладить код, который выполняется в привилегированном режиме или в другом сеансе, не подключённом к отладчику. Также помните, что отладка не работает для кода, выполняющегося на стороне СУБД (запросы исполняются в СУБД, и пошагово их отладить в конфигураторе нельзя — только анализировать текст запроса и результат).
Как отключить отладку после завершения работ
После завершения диагностики режим отладки следует выключить: удалите параметр -debug из строки запуска службы (в реестре Windows или в юните systemd) и снова перезапустите агент сервера. Это вернёт кластеру штатную производительность и исключит случайные остановки сеансов на забытых точках останова.
Заодно снимите все точки останова в конфигураторе (меню «Отладка — Снять все точки останова») и отключите подключённые предметы отладки. Если использовалась публикация отладочного интерфейса на web-сервере, уберите соответствующий флажок в настройках публикации — открытый отладочный интерфейс на доступном извне web-сервере является угрозой безопасности.
Что важно запомнить
Отладка сервера включается параметром -debug в строке запуска агента сервера с обязательным перезапуском службы, после чего предметы отладки подключаются в конфигураторе вручную. Для современных версий платформы предпочтительна отладка по HTTP через web-сервер, а на продуктивных системах режим отладки следует включать только временно.
Частые вопросы
Можно ли включить отладку сервера без перезапуска службы?
Нет. Параметр -debug считывается агентом сервера только при старте процесса, поэтому перезапуск службы обязателен. Учтите, что перезапуск агента на продуктивном сервере разорвёт активные сеансы пользователей — планируйте работу на нерабочее время.
Почему точка останова в серверной процедуре отображается как недостижимая?
Обычно это означает, что серверный предмет отладки не подключён: откройте «Отладка — Подключение» и отметьте нужные типы сеансов. Другие причины — отладка не включена на сервере, несовпадение версий конфигуратора и сервера либо то, что код выполняется в сеансе другого типа (например, в фоновом задании без включённого автоподключения).
Как отладить фоновое задание на сервере?
Включите отладку на сервере параметром -debug, затем в конфигураторе в настройках отладки («Сервис — Параметры») разрешите автоматическое подключение фоновых заданий. После этого запустите задание — конфигуратор подхватит его сеанс и остановится на точке останова в модуле, который исполняет задание.
Нужен ли -debug для отладки по HTTP?
Да, для клиент-серверного варианта агент сервера всё равно запускается с параметром -debug. Протокол HTTP меняет только способ транспорта отладочных данных: дополнительно потребуется публикация отладочного интерфейса на web-сервере и выбор протокола HTTP в параметрах отладки конфигуратора.
Влияет ли режим отладки на производительность сервера?
Да. В режиме отладки серверный код исполняется медленнее, а остановка на точке останова блокирует соответствующий сеанс. Поэтому на продуктивных системах отладку включают кратковременно для диагностики и обязательно отключают после завершения, удаляя параметр -debug и перезапуская службу.
Можно ли отлаживать серверный код в файловой базе?
В файловом варианте код с директивой «НаСервере» фактически выполняется в том же процессе клиентского приложения, поэтому отдельный параметр -debug не нужен — достаточно запустить отладку из конфигуратора обычным способом. Параметр -debug требуется именно для кластера серверов 1С.