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

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

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

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

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

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

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

Что происходит при включении отладки на сервере

Когда агент сервера 1С запущен с ключом -debug, рабочие процессы rphost начинают принимать подключения от отладчика конфигуратора. Каждый рабочий процесс регистрирует отладочный порт, и конфигуратор через пункт меню «Отладка → Подключение» может присоединиться к серверному предмету отладки — сеансу, фоновому заданию или вызову веб-сервиса.

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

Начиная с платформы 8.3.7, действует раздельное управление: параметр -debug включает отладку по протоколу TCP, а -debug -http — по протоколу HTTP, который требуется для отладки через веб-сервер (тонкий и веб-клиент, публикация на IIS или Apache). Выбор протокола должен совпадать с настройкой в параметрах конфигуратора.

Включение debug в Windows через реестр

Наиболее распространённый способ для сервера на Windows — изменить параметры запуска службы агента сервера 1С в реестре. Служба обычно называется «Агент сервера 1С:Предприятия 8.3» (1C:Enterprise 8.3 Server Agent).

Порядок действий следующий. Откройте редактор реестра (Win+R → regedit) и перейдите в ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\, найдите подраздел службы агента — для 64-разрядной версии это обычно «1C:Enterprise 8.3 Server Agent (x86-64)». В параметре ImagePath к существующей строке запуска добавьте в конец -debug, не удаляя остальные ключи.

После правки обязательно перезапустите службу: через оснастку services.msc или командой net stop "1C:Enterprise 8.3 Server Agent (x86-64)" с последующим net start. Без перезапуска изменения не применятся — агент читает параметры только при старте.

Включение debug через реестр Windows
  1. 1
    Остановите работу пользователей или переведите базу на тестовый контур
  2. 2
    Откройте regedit и найдите службу агента в HKLM\SYSTEM\CurrentControlSet\Services
  3. 3
    В параметре ImagePath добавьте в конец строки ключ -debug
  4. 4
    Для отладки через веб-сервер используйте связку -debug -http
  5. 5
    Перезапустите службу агента сервера 1С
  6. 6
    Проверьте подключение отладчика из конфигуратора

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

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

bash
"C:\Program Files\1cv8\8.3.xx.xxxx\bin\ragent.exe" -debug

Такой способ удобен для разовой диагностики: агент работает, пока открыто окно консоли, а после закрытия достаточно снова запустить штатную службу — конфигурация сервера остаётся нетронутой. Минус в том, что при ручном запуске агент работает от имени текущего пользователя, и права на каталоги кластера (srvinfo) должны ему позволять чтение и запись.

Если каталог srvinfo недоступен, агент стартует с пустым реестром кластера и базы «пропадут» из консоли. В этом случае укажите путь к каталогу явно ключом -d с тем же значением, что и у штатной службы.

Включение debug на сервере Linux

На Linux параметры запуска агента задаются в файле конфигурации службы. Для установки через пакеты 1С это обычно /etc/sysconfig/srv1cv8 (в RPM-based системах) или аналогичный файл окружения, где есть переменная SRV1CV8_DEBUG либо строка дополнительных параметров.

Достаточно установить SRV1CV8_DEBUG=1 (или добавить -debug в строку параметров, в зависимости от версии пакета) и перезапустить службу командой systemctl restart srv1cv8. Если сервер развёрнут вручную без пакетов, запускайте ragent напрямую: /opt/1cv8/x86_64/8.3.xx.xxxx/ragent -debug.

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

Настройка отладки по HTTP для веб-клиента

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

Дополнительно в публикации веб-сервера файл default.vrd должен содержать элемент debug с атрибутом debugServerAddress, указывающим на сервер отладки. При публикации через диалог «Публикация на веб-сервере» в конфигураторе этот параметр добавляется автоматически, если отмечена соответствующая опция.

Обратите внимание: протокол отладки в конфигураторе и режим запуска агента должны совпадать. Если сервер запущен с -debug -http, а конфигуратор настроен на TCP, подключение предметов отладки не произойдёт без явного сообщения об ошибке — предметы просто не появятся в списке.

TCP или HTTP: какой протокол отладки выбрать

TCP (-debug)

Подходит для толстого и тонкого клиента при прямом подключении к кластеру. Проще в настройке, но не работает через веб-сервер.

HTTP (-debug -http)

Необходим для веб-клиента и публикаций на IIS/Apache. Требует настройки протокола в конфигураторе и параметров в default.vrd.

Подключение отладчика и проверка результата

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

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

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

Как проверить, что отладка включена

Строка процесса ragent
Норма

В параметрах запуска виден ключ -debug (ps aux в Linux или Process Explorer в Windows)

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

Ключа нет — служба перезапущена без изменений или правка реестра не сохранена

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

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

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

Список пуст — несовпадение протокола отладки или недоступность портов

Точка останова в серверной процедуре
Норма

Выполнение останавливается при вызове из клиента

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

Точка игнорируется — предмет отладки не подключён

Типичные проблемы и их решение

Самая частая причина неработающей отладки — забытый перезапуск службы после правки реестра или конфигурации. Вторая по частоте — несовпадение протоколов: сервер в HTTP-режиме, конфигуратор в TCP или наоборот. Третья — файрвол: для TCP-отладки должны быть открыты порты рабочих процессов (по умолчанию диапазон 1560–1591) и порт агента 1540.

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

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

Типичные ошибки
01
Правка реестра без перезапуска службы — параметры не применяются, отладка не включается
02
Несовпадение протоколов: -debug -http на сервере и TCP в конфигураторе — предметы отладки не появляются
03
Закрытые порты 1540–1591 на файрволе — отладчик не может подключиться к рабочим процессам
04
Постоянная работа продуктивного сервера с -debug — снижение производительности и лишняя нагрузка
05
Запуск ragent вручную без ключа -d — агент создаёт пустой реестр кластера, и базы «исчезают» из консоли
Итог

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

Debug на сервере 1С включается ключом -debug при запуске агента: через реестр в Windows, через srv1cv8 или systemd в Linux. Для веб-клиента нужен HTTP-протокол (-debug -http) и соответствующая настройка конфигуратора. После изменений службу перезапускают, результат проверяют по списку предметов отладки, а по завершении работ ключ убирают.

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

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

Чаще всего сервер запущен без ключа -debug либо отладчик не подключён к серверному предмету отладки. Откройте «Отладка → Подключение», убедитесь, что в списке есть предмет типа «Сервер», и подключите его. Также проверьте совпадение протокола отладки (TCP/HTTP) в конфигураторе и параметрах запуска агента.

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

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

Опасно ли включать debug на продуктивном сервере?

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

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

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

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

TCP-отладка работает при прямом соединении клиента с кластером и не требует веб-сервера. HTTP-отладка нужна, когда сеанс идёт через публикацию на IIS или Apache (веб-клиент, тонкий клиент через веб-сервер): трафик отладки проходит через тот же веб-сервер, поэтому требуется ключ -http у агента и настройка debugServerAddress в default.vrd.

Служба агента не стартует после правки ImagePath. Что делать?

Скорее всего, в строке запуска нарушен синтаксис: лишняя или отсутствующая кавычка, удалён существующий ключ. Откройте реестр, сравните ImagePath с исходным значением (его стоит сохранить до правки), исправьте строку и запустите службу снова. Детали сбоя смотрите в журнале событий Windows, раздел «Система».