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

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

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

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

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

Чтобы включить отладчик, нужно запустить агент сервера 1С с параметром -debug, а при необходимости указать протокол отладки и сетевой порт. Ниже разобраны способы для Windows и Linux, настройка отладки HTTP-сервисов и фоновых заданий, а также типичные причины, почему точки останова «не ловятся».

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

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

Проверьте версию платформы: она должна совпадать у сервера и у клиента, с которого запускается конфигуратор. Также убедитесь, что у вас есть права администратора на сервере (для редактирования службы) и права администратора кластера 1С, если доступ к консоли ограничен.

Определите, какой протокол отладки будете использовать. В платформе 8.3 доступны два варианта: классический протокол по TCP и отладка по HTTP (через сервер отладки DBGS). Для большинства задач достаточно классического варианта с параметром -debug.

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

В Windows агент сервера 1С обычно работает как служба «Агент сервера 1С:Предприятия 8.3». Параметр запуска хранится в реестре, поэтому изменение выполняется в два шага: правка строки запуска и перезапуск службы.

Порядок действий
  1. 1
    Остановите службу «Агент сервера 1С:Предприятия» через services.msc или командой net stop.
  2. 2
    Откройте реестр: ветка HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent, параметр ImagePath.
  3. 3
    Добавьте в конец строки запуска параметр -debug (при необходимости -debug -http, если нужна отладка по HTTP).
  4. 4
    Сохраните изменение и запустите службу заново.
  5. 5
    Проверьте в диспетчере задач, что процесс ragent.exe запущен с параметром -debug.

Пример строки запуска после правки:

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

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

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

На Linux агент сервера запускается скриптом или systemd-юнитом. Параметр -debug добавляется в команду запуска демона. Найдите файл юнита (обычно /etc/systemd/system/srv1cv8-*.service или скрипт в /etc/init.d/) и отредактируйте строку ExecStart.

bash
sudo systemctl edit srv1cv8-8.3.22.1750@default
# в строку ExecStart добавить: -debug
sudo systemctl daemon-reload
sudo systemctl restart srv1cv8-8.3.22.1750@default

После перезапуска проверьте, что процесс запущен с нужным параметром: ps aux | grep ragent. В выводе должна присутствовать строка с -debug. Если параметра нет — проверьте, что редактировали именно тот юнит, который управляет запуском, и что выполнен daemon-reload.

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

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

В настройках отладки («Отладка» → «Настройка») проверьте типы предметов отладки: для серверного кода нужны «Сервер», для фоновых заданий — «Фоновое задание», для веб-сервисов — соответствующие пункты. Отметьте те, с которыми работаете, иначе конфигуратор не будет останавливаться на точках останова в этих контекстах.

Если предметы отладки не появляются в списке, проверьте сетевую доступность портов отладки. По умолчанию используются порты из диапазона 1560–1591 (рабочие процессы) — они должны быть открыты между компьютером разработчика и сервером, либо отладка выполняется непосредственно на сервере.

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

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

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

Для отладки через протокол HTTP (актуально при работе через веб-сервер и для мобильной платформы) используется отдельный сервер отладки dbgs.exe. Он запускается с указанием кластера, а в конфигураторе в настройках отладки выбирается протокол «Отладка по HTTP» и адрес сервера отладки.

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

Классическая отладка по TCP (-debug)

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

Отладка по HTTP (dbgs)

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

Запуск агента как приложения

Удобен для временной диагностики на тестовом стенде. Не подходит для постоянной эксплуатации — агент живёт, пока открыто окно консоли.

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

Признак успешной настройки: в окне «Подключение» конфигуратора видны предметы отладки «Сервер» по активным сеансам, а точка останова в серверной процедуре подсвечена как активная (не серая). Выполните действие в клиенте, которое вызывает серверный код, — исполнение должно остановиться на точке.

Типичные ошибки
01
Параметр -debug добавлен, но служба не перезапущена — изменение не применилось, предметы отладки не появляются.
02
Не включён тип предмета отладки «Сервер» в настройках конфигуратора — точки останова игнорируются.
03
Порты рабочих процессов (1560–1591) закрыты брандмауэром — конфигуратор не видит серверные процессы.
04
Разные версии платформы на сервере и клиенте — подключение отладки невозможно или работает нестабильно.
05
Отладка оставлена включённой на продуктивном сервере — снижается производительность и повышается риск остановки бизнес-процессов на забытых точках останова.

Отдельная частая ситуация — точки останова «серые» (неактивные). Это означает, что модуль не загружен в подключённом предмете отладки: либо код ещё не выполнялся, либо вы смотрите не тот сеанс. Проверьте, что подключены именно к сеансу нужного пользователя.

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

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

Строка запуска службы агента
Норма

В ImagePath или ExecStart присутствует -debug, служба перезапущена

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

Параметр есть в реестре, но процесс запущен без него — службу не перезапускали

Окно «Подключение» в конфигураторе
Норма

Видны предметы отладки «Сервер» для активных сеансов

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

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

Точка останова в серверном модуле
Норма

Красная активная точка, исполнение останавливается

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

Серая точка — предмет отладки не подключён или код не вызывается

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

Итог

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

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

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

Почему конфигуратор не видит серверные предметы отладки, хотя -debug добавлен?

Чаще всего служба агента не была перезапущена после правки параметра, либо порты рабочих процессов закрыты брандмауэром. Проверьте фактическую строку запуска процесса ragent.exe в диспетчере задач и сетевую доступность диапазона портов 1560–1591.

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

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

Влияет ли включённая отладка на производительность сервера?

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

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

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

Точка останова серая и не срабатывает — что делать?

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

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

Классическая отладка работает по TCP напрямую с рабочими процессами и требует открытых портов. Отладка по HTTP идёт через отдельный сервер отладки dbgs и подходит, когда разработчик отделён от сервера сетевыми ограничениями, но требует дополнительной установки и настройки dbgs.