Администрирование · 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С:Предприятия» через services.msc или командой net stop.
- 2Откройте реестр: ветка HKLM\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent, параметр ImagePath.
- 3Добавьте в конец строки запуска параметр -debug (при необходимости -debug -http, если нужна отладка по HTTP).
- 4Сохраните изменение и запустите службу заново.
- 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.
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» и адрес сервера отладки.
Сравнение вариантов
Подходит для большинства задач в локальной сети. Ограничение: нужна прямая сетевая доступность портов рабочих процессов.
Подходит, когда разработчик и сервер разделены брандмауэром или работа идёт через веб-сервер. Требует запуска и настройки отдельного сервера отладки.
Удобен для временной диагностики на тестовом стенде. Не подходит для постоянной эксплуатации — агент живёт, пока открыто окно консоли.
Проверка результата и типичные ошибки
Признак успешной настройки: в окне «Подключение» конфигуратора видны предметы отладки «Сервер» по активным сеансам, а точка останова в серверной процедуре подсвечена как активная (не серая). Выполните действие в клиенте, которое вызывает серверный код, — исполнение должно остановиться на точке.
Отдельная частая ситуация — точки останова «серые» (неактивные). Это означает, что модуль не загружен в подключённом предмете отладки: либо код ещё не выполнялся, либо вы смотрите не тот сеанс. Проверьте, что подключены именно к сеансу нужного пользователя.
Как проверить результат
В ImagePath или ExecStart присутствует -debug, служба перезапущена
Параметр есть в реестре, но процесс запущен без него — службу не перезапускали
Видны предметы отладки «Сервер» для активных сеансов
Список пуст или видны только клиентские сеансы
Красная активная точка, исполнение останавливается
Серая точка — предмет отладки не подключён или код не вызывается
После завершения работ не забудьте убрать параметр -debug на продуктивном сервере и перезапустить службу в нерабочее время. Режим отладки заметно увеличивает накладные расходы рабочих процессов, а забытая точка останова способна «заморозить» сеанс пользователя до вмешательства администратора.
Что важно запомнить
Отладка на сервере 1С 8.3 включается параметром -debug в строке запуска агента сервера с последующим перезапуском службы. В конфигураторе нужно включить поиск и подключение предметов отладки нужных типов. Работы выполняйте в нерабочее время, а после завершения отладку на продуктиве отключайте.
Частые вопросы
Почему конфигуратор не видит серверные предметы отладки, хотя -debug добавлен?
Чаще всего служба агента не была перезапущена после правки параметра, либо порты рабочих процессов закрыты брандмауэром. Проверьте фактическую строку запуска процесса ragent.exe в диспетчере задач и сетевую доступность диапазона портов 1560–1591.
Можно ли включить отладку без перезапуска службы сервера?
Нет, параметр -debug читается агентом только при старте. Чтобы не прерывать работу пользователей, изменение планируют на нерабочее время либо поднимают отдельный тестовый кластер с включённой отладкой.
Влияет ли включённая отладка на производительность сервера?
Да, режим отладки добавляет накладные расходы на исполнение кода в рабочих процессах. На тестовом сервере это некритично, но на продуктиве отладку рекомендуется включать только на время диагностики и затем отключать.
Как отладить код, который выполняется под другим пользователем?
В окне «Подключение» выберите предмет отладки нужного сеанса — список показывает сеансы всех пользователей, если у вас есть права администратора кластера. Либо включите автоматическое подключение предметов отладки всех пользователей в настройках отладки.
Точка останова серая и не срабатывает — что делать?
Серая точка означает, что модуль не загружен в подключённом предмете отладки. Убедитесь, что включён нужный тип предмета (сервер, фоновое задание), что вы подключены к правильному сеансу и что код действительно вызывается — например, серверная процедура может не выполняться, если вызов идёт только на клиенте.
Чем отличается отладка по HTTP от классической?
Классическая отладка работает по TCP напрямую с рабочими процессами и требует открытых портов. Отладка по HTTP идёт через отдельный сервер отладки dbgs и подходит, когда разработчик отделён от сервера сетевыми ограничениями, но требует дополнительной установки и настройки dbgs.