Разработка и Конфигурация · 10 мин
Как запустить сервер 1С в режиме отладки
Как запустить сервер 1С в режиме отладки: команда -debug, настройка службы агента, подключение конфигуратора, отладка на Linux и Windows, типичные ошибки.
Отладка серверного кода — обязательный этап разработки и доработки конфигураций 1С:Предприятие в клиент-серверном варианте. Без специального запуска агента сервера конфигуратор не сможет подключиться к серверным процедурам и функциям: точки останова в серверных модулях просто не сработают, а предметы отладки будут недоступны.
Режим отладки включается параметром -debug при запуске агента сервера 1С (ragent). Это относится и к Windows, где агент обычно работает как служба, и к Linux, где он запускается скриптом или вручную. Ниже разобраны все основные сценарии: остановка и перезапуск службы, запуск на Linux, подключение конфигуратора, проверка результата и типичные проблемы.
Важно понимать: режим отладки предназначен для тестовых и разработческих сред. На продуктивном сервере его включают только временно и осознанно, поскольку он влияет на производительность и поведение кластера.
Что даёт параметр -debug и когда он нужен
Параметр -debug переводит агент сервера 1С в режим, при котором рабочие процессы кластера разрешают подключение отладчика. Без него конфигуратор при попытке начать отладку выдаст сообщение о том, что сервер не поддерживает отладку, либо предметы отладки будут пустыми.
Режим нужен в следующих ситуациях: поиск ошибок в серверных процедурах общих модулей, анализ поведения фоновых заданий, отладка web-сервисов и HTTP-сервисов, проверка кода, выполняющегося в привилегированном режиме. Если разработка ведётся в файловой базе, параметр не нужен — там отладка работает сразу.
Запуск в режиме отладки на Windows
На Windows агент сервера обычно работает как служба «Агент сервера 1С:Предприятия». Самый быстрый способ проверить отладку — остановить службу и запустить агент вручную из командной строки с нужными параметрами.
- 1Остановите службу «Агент сервера 1С:Предприятия» через services.msc или командой net stop
- 2Откройте командную строку от имени администратора
- 3Перейдите в каталог bin нужной версии платформы, например C:\Program Files\1cv8\<версия>\bin
- 4Выполните: ragent.exe -debug -port 1540 -regport 1541 -range 1560:1591
- 5Не закрывайте окно консоли — агент работает, пока окно открыто
- 6Подключитесь конфигуратором и проверьте доступность предметов отладки
net stop "1C:Enterprise 8.3 Server Agent"
cd "C:\Program Files\1cv8\8.3.22.1750\bin"
ragent.exe -debug -port 1540 -regport 1541 -range 1560:1591Порты указывайте те же, что использовались в службе, иначе клиенты и консоль кластера не найдут агент. Стандартные значения: порт агента 1540, порт реестра 1541, диапазон рабочих процессов 1560–1591. Если служба была настроена с другими портами, посмотрите их в свойствах службы или в реестре.
Постоянное включение отладки через реестр
Если режим отладки нужен постоянно (например, на сервере разработки), удобнее добавить параметр прямо в строку запуска службы. Откройте редактор реестра и найдите ветку HKLM\SYSTEM\CurrentControlSet\Services, внутри — раздел службы агента сервера 1С (имя содержит версию платформы). В параметре ImagePath добавьте -debug в строку запуска и перезапустите службу.
Альтернатива — перерегистрировать службу утилитой ragent с ключами -instsrvc и -debug, предварительно удалив старую регистрацию ключом -rmsrvc. Оба способа равнозначны; правка реестра быстрее, но требует аккуратности: ошибка в строке запуска приведёт к тому, что служба не стартует.
Запуск в режиме отладки на Linux
На Linux агент сервера запускается скриптом srv1cv8 (для установки через пакеты) или напрямую бинарником ragent из каталога платформы. Принцип тот же: остановить текущий экземпляр и запустить с параметром -debug.
sudo systemctl stop srv1cv8-8.3.22-1750
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.22.1750/ragent -debug -port 1540 -regport 1541 -range 1560:1591 -d /home/usr1cv8/.1cv8Обратите внимание на три момента. Во-первых, запускайте агент от имени служебного пользователя (обычно usr1cv8), иначе права на файлы кластера могут сбиться. Во-вторых, укажите каталог данных кластера параметром -d — тот же, что использует штатный запуск, иначе вы получите «пустой» кластер без ваших баз. В-третьих, для постоянного режима отредактируйте unit-файл systemd или скрипт инициализации, добавив -debug в строку запуска, а затем выполните systemctl daemon-reload и перезапуск службы.
Подключение конфигуратора и проверка результата
После запуска агента с параметром откройте конфигуратор и перейдите в меню «Отладка» → «Подключение». В окне подключения нажмите «Настройка» и убедитесь, что выбраны нужные типы предметов отладки: клиент, сервер, фоновые задания, web-сервисы. Затем обновите список — в нём должны появиться доступные сеансы.
Как проверить, что отладка работает
Видны сеансы и фоновые задания, доступны для подключения
Список пуст или сообщение, что отладка недоступна
Выполнение останавливается, доступны переменные и стек вызовов
Точка останова игнорируется при явном выполнении кода
В строке запуска процесса присутствует -debug
Параметра нет — агент запущен штатной службой
Если ручной запуск выполнялся в окне консоли, дополнительный признак корректной работы — отсутствие ошибок в выводе агента и возможность подключиться к кластеру через консоль администрирования. Проверьте, что информационные базы видны и клиенты подключаются в обычном режиме.
Типичные ошибки и их устранение
Отдельная частая ситуация — версия платформы. Если на сервере установлено несколько версий 1С, убедитесь, что запускаете ragent именно той версии, под которой зарегистрирована служба и работают базы. Отладчик конфигуратора также должен быть совместимой версии, иначе подключение не состоится.
Если отладка нужна для фоновых заданий или web-сервисов, проверьте, что соответствующие типы предметов отладки включены в настройках подключения, а для HTTP-сервисов — что публикация на веб-сервере выполнена с включённой отладкой (параметр debug в файле default.vrd).
Как выбрать способ включения отладки
Ограничения и влияние на производительность
Режим отладки заставляет рабочие процессы выполнять код с дополнительными проверками и поддержкой протокола отладки. На нагруженных системах это заметно сказывается на скорости выполнения серверного кода. Кроме того, остановленная точкой останова транзакция удерживает блокировки в СУБД — при длительной паузе возможны тайм-ауты у других пользователей.
Поэтому безопасная практика такова: продуктивный сервер отлаживается в копии базы или в выделенном тестовом кластере. Если без отладки на продуктиве не обойтись, делайте это в окно минимальной нагрузки, ставьте условные точки останова и завершайте сеанс отладки сразу после получения нужных данных.
Что важно запомнить
Режим отладки сервера 1С включается параметром -debug при запуске агента ragent — вручную из командной строки или через настройку службы. После запуска проверьте подключение предметов отладки в конфигураторе и не оставляйте режим включённым на продуктивном сервере.
Частые вопросы
Можно ли включить отладку на сервере 1С без перезапуска службы?
Нет. Параметр -debug указывается только при старте агента сервера, поэтому службу придётся остановить и запустить заново. Планируйте кратковременную недоступность кластера на время перезапуска.
Почему конфигуратор пишет, что отладка недоступна, хотя сервер запущен с -debug?
Чаще всего причины такие: запущен не тот экземпляр ragent (штатная служба продолжает работать), несовпадение версий платформы сервера и конфигуратора, либо в настройках подключения не отмечен нужный тип предмета отладки. Проверьте строку запуска процесса ragent и настройки в меню «Отладка» → «Подключение».
Нужен ли -debug для отладки файловой базы?
Нет. В файловом варианте код выполняется в процессе клиентского приложения, и отладка доступна сразу, без дополнительных параметров. Параметр относится только к клиент-серверной архитектуре.
Как отладить фоновое задание на сервере?
Запустите агент с -debug, в конфигураторе откройте «Отладка» → «Подключение», включите тип «Фоновое задание» и дождитесь появления задания в списке. Подключитесь к нему до начала выполнения интересующего кода либо используйте точку останова с условием, если задание запускается периодически.
Влияет ли режим отладки на работу пользователей?
Да. Выполнение серверного кода замедляется, а остановка на точке останова внутри транзакции удерживает блокировки в СУБД, что может вызвать тайм-ауты у других сеансов. Поэтому на продуктивных системах режим включают только временно.
Как вернуть штатный запуск после отладки?
Остановите вручную запущенный ragent (закройте окно консоли или завершите процесс) и запустите штатную службу агента сервера. Если параметр добавлялся в реестр или unit-файл — удалите -debug и перезапустите службу, затем убедитесь, что клиенты подключаются в обычном режиме.