Администрирование · 11 мин
Отладка на сервере 1С 8.3 под Linux: включение debug и подключение
Как включить отладку на сервере 1С 8.3 под Linux: параметр -debug в srv1cv8, настройка агента, подключение конфигуратора, типичные ошибки и проверка результата.
Отладка серверного кода в клиент-серверном варианте 1С:Предприятие 8.3 выполняется не на клиенте, а на рабочем сервере, где исполняются процедуры с директивами «НаСервере» и «НаСервереБезКонтекста». Если агент сервера запущен без специального флага, конфигуратор просто не увидит серверные предметы отладки: точки останова в серверных модулях будут игнорироваться, а в списке подключения появятся только клиентские сеансы.
На Linux-платформе включение отладки сводится к запуску агента сервера (ragent) с параметром -debug и указанием порта для подключения отладчика. После этого конфигуратор с любой машины в сети сможет подключиться к серверным процедурам. Важно понимать, что режим отладки снижает производительность сервера и открывает дополнительный сетевой порт, поэтому на продуктивных системах его включают на ограниченное время или выносят отладку на тестовый контур.
Ниже разобраны конкретные шаги: как изменить параметры запуска службы, какие порты задействуются, как подключить конфигуратор и как проверить, что отладка действительно работает, а также типичные ошибки, из-за которых серверные точки останова «не срабатывают».
Как устроена отладка в клиент-серверном 1С и зачем нужен флаг -debug
В файловом варианте весь код исполняется в одном процессе, и конфигуратор отлаживает его напрямую. В клиент-серверном варианте серверный код выполняет рабочий процесс rphost на сервере приложений, а конфигуратор — отдельная программа, которая должна подключиться к этому процессу по сети через специальный протокол отладки.
По умолчанию агент сервера 1С запущен без поддержки отладки: протокол отладчика не инициализируется, и серверные предметы отладки недоступны. Параметр -debug при запуске ragent включает этот протокол и заставляет рабочие процессы принимать подключения отладчика.
Есть два режима отладки, которые выбираются параметром -debug: по протоколу TCP (классический, работает во всех версиях 8.3) и по протоколу HTTP (появился в более поздних версиях платформы и требует публикации отладчика через веб-сервер). Для большинства задач администрирования достаточно TCP-режима, его и рассмотрим как основной сценарий.
Подготовка: что проверить перед включением отладки
Перед изменением параметров службы убедитесь, что у вас есть права на перезапуск службы агента сервера (обычно root или sudo) и что вы понимаете, какой экземпляр кластера будете перенастраивать. Если на машине запущено несколько агентов с разными портами, менять нужно тот, который обслуживает нужную информационную базу.
Проверьте текущие параметры запуска: они видны в списке процессов. Это поможет не потерять существующие настройки (каталог кластера, порт агента, диапазон портов рабочих процессов) при редактировании.
ps aux | grep ragentТакже заранее определите, откуда будет подключаться конфигуратор: с той же машины, из локальной сети или через VPN. От этого зависит, нужно ли открывать порты отладки в файрволе (firewalld, iptables или ufw) и не режет ли их сетевое оборудование.
Включение отладки: изменение параметров запуска агента
Способ изменения параметров зависит от того, как установлен и запускается агент сервера. В современных дистрибутивах чаще всего используется systemd-юнит, но встречаются и классические init-скрипты, и ручной запуск.
Вариант 1: systemd-юнит
Найдите юнит службы (обычно srv1cv8-*.service или похожее имя) и отредактируйте строку ExecStart, добавив к параметрам ragent флаг -debug. Удобнее использовать systemctl edit, чтобы переопределение сохранилось в отдельном файле и не затиралось при обновлении пакета.
systemctl edit srv1cv8-8.3.22.1750.serviceВ секции переопределения укажите полную строку запуска, например:
[Service]
ExecStart=
ExecStart=/opt/1cv8/x86_64/8.3.22.1750/ragent -daemon -port 1540 -regport 1541 -range 1560:1591 -d /var/lib/1cv8 -debug -debugPort 1550Пустая строка ExecStart= перед новой командой обязательна: она сбрасывает исходное значение, иначе systemd попытается выполнить обе команды. После правки выполните systemctl daemon-reload и перезапустите службу.
Вариант 2: init-скрипт или ручной запуск
Если агент запускается скриптом, откройте файл скрипта (часто это /etc/init.d/srv1cv8 или скрипт в каталоге установки) и добавьте -debug к строке запуска ragent. При ручном запуске просто укажите флаг в командной строке:
/opt/1cv8/x86_64/8.3.22.1750/ragent -daemon -port 1540 -regport 1541 -range 1560:1591 -d /var/lib/1cv8 -debug -debugPort 1550Перезапуск службы и проверка, что отладка включилась
После изменения параметров перезапустите службу и убедитесь, что агент поднялся с новыми флагами. Проверка делается двумя способами: по списку процессов и по прослушиваемым портам.
- 1Примените изменения: systemctl daemon-reload (для systemd)
- 2Перезапустите службу: systemctl restart srv1cv8-<версия>.service
- 3Проверьте статус: systemctl status srv1cv8-<версия>.service
- 4Убедитесь, что в ps aux процесс ragent запущен с флагом -debug
- 5Проверьте, что порт отладки слушается: ss -tlnp | grep 1550
- 6Откройте порт в файрволе, если конфигуратор подключается с другой машины
Если служба не стартует после правки, смотрите журнал: journalctl -u srv1cv8-*.service -n 50. Частая причина — синтаксическая ошибка в строке запуска или конфликт портов, когда выбранный -debugPort уже занят другим процессом.
Как проверить результат
В командной строке виден флаг -debug
Флаг отсутствует — юнит не перечитан или правка внесена не в тот файл
ss -tlnp показывает порт 1550 (или ваш debugPort) в состоянии LISTEN
Порт не слушается — агент не стартовал с отладкой или упал
telnet/nc к серверу по порту отладки успешен
Таймаут — порт закрыт файрволом или недоступен по сети
Подключение конфигуратора к серверной отладке
На стороне разработчика откройте конфигуратор нужной информационной базы и перейдите в меню «Отладка → Подключение». Если база открыта через сервер 1С, конфигуратор обычно сам находит доступные предметы отладки; при необходимости укажите адрес сервера и порт отладки в настройках («Отладка → Параметры», раздел подключения).
В окне подключения отметьте нужные предметы отладки: «Сервер» для серверных вызовов, «Фоновое задание» для отладки регламентных и фоновых задач, при необходимости — клиентское приложение. После подключения поставьте точку останова в серверном модуле и выполните действие, которое вызывает этот код.
Для отладки фоновых заданий есть нюанс: задание стартует в отдельном сеансе, и конфигуратор должен успеть к нему подключиться. Включите в параметрах отладки автоматическое подключение новых предметов отладки нужных типов — тогда фоновые задания будут подхватываться при старте.
Если серверная точка останова не срабатывает, первым делом проверьте, что код действительно исполняется на сервере (директива &НаСервере), а не кэширован на клиенте, и что в окне подключения подключён именно предмет отладки «Сервер», а не только клиентское приложение.
Типичные ошибки и их признаки
Отдельная группа проблем связана с версиями платформы: конфигуратор и сервер должны быть совместимых версий 8.3. Значительное расхождение версий может приводить к тому, что предметы отладки видны, но подключение обрывается или ведёт себя нестабильно.
Если сервер работает за NAT или в контейнере, убедитесь, что порт отладки проброшен наружу и что конфигуратор обращается по адресу, на котором агент реально слушает (проверьте, не привязан ли ragent только к localhost).
Ограничения и безопасная эксплуатация
Режим отладки — это инструмент разработки и диагностики, а не постоянный режим работы. Он добавляет накладные расходы на исполнение серверного кода и открывает сетевой интерфейс, через который подключившийся отладчик может читать данные и выполнять код в контексте сервера. Доступ к порту отладки следует ограничивать файрволом только адресами машин разработчиков.
Для регулярной диагностики продуктивных проблем безопаснее поднимать копию базы на тестовом сервере и включать отладку там. Если отладка на продуктиве неизбежна (например, ошибка воспроизводится только на реальных данных), включайте её на минимально необходимое время и выключайте сразу после сбора информации.
Как выбрать действие
Часто задаваемые вопросы
Можно ли включить отладку без перезапуска сервера 1С?
Нет. Флаг -debug считывается агентом при старте, поэтому перезапуск службы обязателен. Чтобы снизить влияние на пользователей, планируйте перезапуск на время минимальной нагрузки и заранее предупреждайте о разрыве сеансов.
Какой порт используется для отладки, если не указывать -debugPort?
Платформа выделяет порт из своего стандартного диапазона автоматически, и он может меняться между запусками. Для стабильной работы рекомендуется явно задавать -debugPort и открывать именно этот порт в файрволе.
Почему точка останова в серверной процедуре не срабатывает?
Наиболее частые причины: агент запущен без -debug, в окне подключения не отмечен предмет отладки «Сервер», код фактически исполняется на клиенте, либо вызов кэширован и серверная процедура не вызывается повторно. Проверяйте в указанном порядке.
Как отладить фоновое или регламентное задание?
В параметрах отладки конфигуратора включите автоматическое подключение предметов отладки типа «Фоновое задание». Тогда при старте задания конфигуратор подключится к его сеансу, и точки останова в коде задания сработают.
Опасно ли оставлять режим отладки включённым постоянно?
Да. Помимо снижения производительности, порт отладки — это канал, через который подключившийся может исполнять код на сервере. Ограничивайте доступ файрволом и отключайте -debug после завершения диагностики.
Чем отличается отладка по HTTP от классической по TCP?
HTTP-отладка работает через веб-сервер и удобна, когда прямой доступ к портам сервера закрыт, но требует дополнительной публикации и поддерживается только в поздних версиях платформы. TCP-режим проще в настройке и подходит для большинства сценариев внутри локальной сети.
Что важно запомнить
Отладка серверного кода 1С 8.3 на Linux включается флагом -debug при запуске ragent с перезапуском службы. Проверяйте результат по процессу и прослушиваемому порту, подключайтесь через «Отладка → Подключение» в конфигураторе, ограничивайте доступ к порту отладки и не оставляйте режим включённым на продуктиве дольше необходимого.