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

Разработка и Конфигурация · 9 мин

Отладка на сервере 1С 8.3: как включить и подключить debug

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

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

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

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

Как устроена отладка в клиент-серверном режиме

В файловом варианте клиент и весь исполняемый код находятся в одном процессе, поэтому отладка работает «из коробки». В клиент-серверном варианте код распределён: тонкий или толстый клиент исполняет клиентские процедуры, а серверные вызовы уходят в рабочие процессы (rphost) кластера серверов. Каждый такой процесс — потенциальный предмет отладки.

Агент сервера (ragent) управляет коммуникацией между отладчиком (конфигуратором) и рабочими процессами. Без ключа -debug агент не открывает отладочные порты, и конфигуратор физически не может подключиться к серверному коду. Именно поэтому перезапуск службы — обязательный шаг, а не рекомендация.

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

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

Откройте редактор реестра и найдите ветку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\1C:Enterprise 8.3 Server Agent (имя может отличаться в зависимости от версии платформы и порта). В параметре ImagePath в конец строки запуска добавьте -debug. После этого перезапустите службу через оснастку services.msc или командную строку.

cmd
net stop "1C:Enterprise 8.3 Server Agent (x86-64)"
net start "1C:Enterprise 8.3 Server Agent (x86-64)"

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

Порядок включения отладки в Windows
  1. 1
    Откройте реестр и найдите параметр ImagePath службы агента сервера 1С
  2. 2
    Добавьте в конец строки запуска параметр -debug
  3. 3
    Перезапустите службу агента сервера
  4. 4
    Откройте конфигуратор и убедитесь, что предметы отладки доступны для подключения

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

На Linux агент сервера запускается скриптом или systemd-юнитом. Найдите файл запуска (обычно в каталоге установки платформы или в /etc/systemd/system/) и добавьте -debug в строку параметров запуска srv1cv8. После изменения выполните systemctl daemon-reload (если правили unit-файл) и перезапустите службу.

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

Подключение предметов отладки в конфигураторе

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

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

Для отладки серверного кода обязательно подключите предмет отладки типа «Сервер». Если в списке его нет — почти наверняка агент запущен без -debug или конфигуратор ищет предметы не на том сервере.

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

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

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

Содержит параметр -debug

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

Параметра нет — правка реестра не применена или служба не перезапущена

Окно «Отладка → Подключение»
Норма

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

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

Список пуст или есть только клиент

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

Выполнение останавливается, доступны переменные

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

Точка останова отображается пустым кружком и не срабатывает

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

Фоновые задания исполняются в отдельных сеансах на сервере, поэтому для их отладки в окне подключения установите флажок «Автоматическое подключение» к фоновым заданиям или вручную подключите появившийся сеанс. Учтите, что сеанс фонового задания создаётся в момент запуска — если задание отработало за долю секунды, подключиться вы не успеете; в таком случае добавьте в код временную задержку или запускайте задание повторно.

Отладка HTTP- и веб-сервисов требует, чтобы публикация на веб-сервере выполнялась с включённым флажком отладки (в файле default.vrd параметр debug). В конфигураторе при публикации через «Администрирование → Публикация на веб-сервере» есть соответствующий флажок «Разрешить отладку». Без него вызовы сервисов будут исполняться мимо отладчика.

Типичные ошибки и их устранение

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

Вторая распространённая причина — конфигуратор ищет предметы отладки локально, а сервер расположен на другой машине. Проверьте настройку «Искать предметы отладки на удалённом сервере». Третья причина — блокировка отладочных портов брандмауэром: диапазон портов отладки должен быть открыт между машиной разработчика и сервером.

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

Типичные ошибки при настройке отладки
01
Добавили -debug в реестр, но не перезапустили службу — агент продолжает работать в старом режиме
02
Не включили поиск предметов отладки на удалённом сервере — конфигуратор видит только локальные процессы
03
Конфигурация базы данных устарела — точки останова не совпадают с исполняемым кодом
04
Отладчику мешает брандмауэр — закрыты порты взаимодействия с сервером
05
Оставили -debug на продуктивном сервере — деградация производительности и риск безопасности

Ограничения и безопасная практика

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

Если включить отладку невозможно (нет прав на сервер, политики безопасности), используйте альтернативы: журнал регистрации с отбором по событию, технологический журнал с настройкой logcfg.xml, вывод отладочных сообщений через Сообщить() в тестовой среде. Они не заменяют пошаговую отладку, но позволяют локализовать место ошибки.

Итог

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

Серверная отладка в 1С 8.3 включается параметром -debug в строке запуска агента сервера с обязательным перезапуском службы. Затем в конфигураторе подключаются предметы отладки с указанием удалённого сервера. Для веб-сервисов дополнительно нужна отладочная публикация. На продуктиве режим отладки держать включённым нельзя.

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

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

Чаще всего агент сервера запущен без параметра -debug либо конфигуратор ищет предметы отладки на локальной машине вместо удалённого сервера. Также проверьте, что конфигурация базы данных обновлена и совпадает с открытой в конфигураторе.

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

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

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

Включите в настройках подключения автоматическое подключение к новым предметам отладки типа «Фоновое задание». Если задание завершается раньше, чем отладчик успевает подключиться, временно добавьте в начало обработчика задержку или цикл ожидания.

Нужен ли -debug для отладки веб-сервисов 1С?

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

Как отключить отладку на сервере после завершения работ?

Удалите параметр -debug из строки запуска службы (в реестре Windows или в скрипте/unit-файле Linux) и перезапустите агент сервера. Проверьте по строке запуска процесса, что ключ исчез.