Администрирование · 11 мин
1С на Linux: как включить отладку
Как включить отладку в 1С на Linux: запуск сервера в режиме debug, настройка конфигуратора, отладка по HTTP и TCP, типичные ошибки и проверка результата.
Отладка в 1С на Linux включается не так, как в привычной Windows-схеме: здесь нет оснастки «Администрирование серверов 1С», а режим отладки задаётся параметром запуска процесса сервера 1С. Если сервер кластера запущен без ключа отладки, конфигуратор просто не сможет подключиться к предметам отладки, и типичная ошибка «Предмет отладки недоступен» будет появляться при любой попытке поставить точку останова.
Ключевой момент — флаг -debug у процесса ragent (или у rmngr в зависимости от схемы запуска) и, для современных платформ, выбор протокола отладки: классический TCP или отладка по HTTP через веб-сервер. Дополнительно нужно убедиться, что клиентское приложение запущено в режиме отладки и что брандмауэр пропускает служебные порты.
Ниже разобраны оба варианта: отладка сервера 1С, развёрнутого на Linux, и отладка файловой базы, запущенной локально под Linux-клиентом. Приведены конкретные команды, признаки успешного включения и типичные ошибки, из-за которых отладка «не подхватывается».
Как устроена отладка 1С на Linux и что нужно проверить заранее
На Linux отладка работает по той же архитектуре, что и на Windows: сервер 1С (агент кластера) принимает отладочные подключения, а конфигуратор выступает отладчиком. Разница только в способе управления: вместо графической консоли служб используются systemd-юниты, скрипты и конфигурационные файлы.
Перед настройкой уточните три вещи: версию платформы (команда /opt/1cv8//linux/ragent --version или просмотр каталога установки), способ запуска сервера (systemd-юнит, init-скрипт, ручной запуск) и тип базы — клиент-серверная или файловая. Для файловой базы отладка включается на стороне клиента и не требует настройки сервера вообще.
Также проверьте права: редактировать юниты и перезапускать службы может только пользователь с правами root или через sudo. Убедитесь, что у вас есть возможность остановить сервер 1С — на рабочей системе это означает кратковременный простой пользователей.
Включение отладки сервера 1С через systemd
Самый частый сценарий — сервер 1С работает как служба systemd. Сначала найдите юнит: systemctl list-units | grep -i 1c или systemctl status srv1cv8-*. Обычно юнит называется примерно srv1cv8-8.3.xx.xxxx.service.
Откройте юнит на редактирование командой sudo systemctl edit --full srv1cv8-имя.service и найдите строку ExecStart. В параметрах запуска ragent добавьте -debug, а для HTTP-отладки дополнительно -http. Строка будет выглядеть примерно так:
ExecStart=/opt/1cv8/x86_64/8.3.22.1750/ragent -daemon -debug -http -port 1540 -regport 1541 -range 1560:1591 -d /var/lib/1cv8После сохранения примените изменения и перезапустите службу:
sudo systemctl daemon-reload
sudo systemctl restart srv1cv8-имя.service
sudo systemctl status srv1cv8-имя.serviceПроверьте, что процесс действительно запущен с нужными флагами: ps aux | grep ragent. В строке процесса должны присутствовать -debug и, при необходимости, -http. Если флагов нет — служба подхватила старый юнит или существует переопределение в каталоге .service.d.
Если сервер запущен скриптом или вручную
В некоторых установках сервер стартует собственным init-скриптом или вручную из терминала. В этом случае найдите скрипт (часто /etc/init.d/srv1cv8 или файл в домашнем каталоге администратора) и добавьте -debug в команду запуска ragent аналогичным образом.
Для ручного запуска в отладочных целях можно остановить службу и запустить агент напрямую от пользователя usr1cv8:
sudo systemctl stop srv1cv8-имя.service
sudo -u usr1cv8 /opt/1cv8/x86_64/8.3.22.1750/ragent -debug -http -d /var/lib/1cv8Ручной запуск удобен для разовой диагностики: весь вывод агента виден в терминале, включая ошибки старта. После завершения работы остановите процесс (Ctrl+C) и верните штатную службу: sudo systemctl start srv1cv8-имя.service.
Настройка конфигуратора и подключение предметов отладки
После перезапуска сервера откройте конфигуратор и перейдите в меню «Отладка → Подключение». Если используется TCP-протокол, сервер должен определиться автоматически или добавляется вручную по имени хоста. Для HTTP-отладки предварительно укажите протокол: «Сервис → Параметры → Отладка», переключатель «Протокол отладки» → «Отладка по HTTP», и задайте адрес публикации информационной базы на веб-сервере.
В окне подключения включите нужные типы предметов отладки: «Тонкий клиент», «Толстый клиент», «Сервер», «Фоновое задание», «Веб-сервис». Частая ситуация: разработчик ставит точку останова в серверной процедуре, но в подключении отмечен только клиент — отладчик молча проходит мимо.
- 1Остановите службу сервера 1С и добавьте -debug (и -http при необходимости) в параметры запуска ragent
- 2Перезапустите службу и проверьте флаги в выводе ps aux | grep ragent
- 3В конфигураторе откройте «Отладка → Подключение» и отметьте нужные типы предметов отладки
- 4Запустите клиентское приложение в режиме отладки (F5 или ключ /debug в командной строке)
- 5Поставьте точку останова и выполните отлаживаемое действие в клиенте
Клиентское приложение тоже должно быть запущено с признаком отладки. При запуске из конфигуратора клавишей F5 это происходит автоматически. При запуске отдельно добавьте в командную строку параметр /debug, а для HTTP-протокола — /debug -http и адрес публикации.
Отладка файловой базы под Linux-клиентом
Если база файловая и работает локально на Linux-машине, сервер 1С не участвует: отладка включается прямо в клиенте. Запустите конфигуратор, откройте базу и стартуйте отладку клавишей F5 — этого достаточно.
Для отладки уже запущенного клиента используйте ключ командной строки: /opt/1cv8/x86_64/8.3.22.1750/1cv8c ENTERPRISE /F /путь/к/базе /debug. Затем в конфигураторе подключитесь к предмету отладки через «Отладка → Подключение».
Сеть, порты и брандмауэр
При TCP-отладке отладчик подключается к агенту сервера по служебным портам. Стандартный диапазон сервера 1С — порт агента 1540, менеджера кластера 1541 и рабочие процессы 1560–1591. Если конфигуратор и сервер находятся на разных машинах, эти порты должны быть открыты в брандмауэре.
Для firewalld команды выглядят так:
sudo firewall-cmd --permanent --add-port=1540-1591/tcp
sudo firewall-cmd --reloadДля HTTP-отладки достаточно доступа к веб-серверу (порты 80/443), что заметно упрощает сетевую настройку, когда сервер 1С закрыт корпоративным периметром. Именно поэтому HTTP-протокол рекомендуется для отладки удалённых серверов.
Как выбрать действие
Проверка результата и типичные ошибки
Признак успешной настройки — предметы отладки видны в окне «Отладка → Подключение», а выполнение кода останавливается на точке останова. Если конфигуратор сообщает, что предметы отладки недоступны, проверяйте по списку: флаги запуска агента, совпадение версий платформы на сервере и клиенте, сетевую доступность портов.
Как проверить результат
ps aux показывает ragent с параметрами -debug (и -http при HTTP-отладке)
Процесс запущен без флагов — юнит не сохранён или есть переопределение
Видны предметы отладки нужных типов (сервер, клиент, фоновые задания)
Список пуст или ошибка подключения — проверьте порты и протокол
Выполнение останавливается, доступны стек вызовов и значения переменных
Точка обведена/проигнорирована — не отмечен нужный тип предмета отладки
Отдельная группа проблем — HTTP-отладка без корректной публикации. Если в параметрах конфигуратора выбран HTTP-протокол, но база не опубликована на веб-сервере с включённой отладкой (параметр публикации), подключение завершится ошибкой. Публикацию выполняют утилитой webinst из состава платформы или вручную через конфигурационный файл веб-сервера.
Ограничения и меры безопасности
Режим отладки снижает производительность сервера и, что важнее, открывает доступ к выполнению кода и данным сеансов. Не оставляйте продуктивный сервер постоянно в режиме отладки: после завершения работ уберите флаг -debug и перезапустите службу в штатном режиме.
Для регулярной разработки удобнее держать отдельный тестовый кластер 1С на Linux с постоянно включённой отладкой, а продуктив переводить в отладочный режим только на время разбора конкретной проблемы. Это снижает и риски безопасности, и влияние на пользователей.
Что важно запомнить
Отладка 1С на Linux включается флагом -debug у ragent (плюс -http для HTTP-протокола) с последующим перезапуском службы. Клиент запускается с /debug, в конфигураторе отмечаются нужные типы предметов отладки. После работы отладочный режим на продуктивном сервере отключают.
Частые вопросы
Как понять, что сервер 1С запущен в режиме отладки?
Выполните ps aux | grep ragent и посмотрите параметры процесса: должен присутствовать флаг -debug. Дополнительный признак — в конфигураторе в окне «Отладка → Подключение» становятся доступны серверные предметы отладки.
Точка останова не срабатывает, хотя отладка включена. Что проверить?
Чаще всего не отмечен нужный тип предмета отладки в окне подключения: для серверного кода нужен тип «Сервер», для фоновых заданий — «Фоновое задание». Также проверьте, что клиент запущен с /debug и версии платформы клиента и сервера совпадают.
Чем HTTP-отладка лучше классической по TCP?
HTTP-отладка работает через веб-сервер, поэтому не требует открытия служебных портов кластера (1540–1591) и проходит через NAT и корпоративные файрволы. Минус — нужна публикация информационной базы на веб-сервере и чуть более сложная первоначальная настройка.
Можно ли отлаживать файловую базу на Linux без сервера 1С?
Да. Сервер не нужен: откройте базу в конфигураторе и нажмите F5, либо запустите клиент с ключом /debug и подключитесь к нему через «Отладка → Подключение». Все механизмы отладки работают локально внутри клиентского процесса.
Опасно ли держать продуктивный сервер в режиме отладки?
Да, постоянно держать не рекомендуется. Режим отладки снижает производительность и позволяет подключившемуся отладчику просматривать данные сеансов и управлять выполнением кода. Включайте его на время разбора проблемы и отключайте после завершения.
Как отладить фоновое задание на Linux-сервере?
Включите отладку на сервере (флаг -debug), затем в конфигураторе в окне «Отладка → Подключение» отметьте тип «Фоновое задание». Когда задание запустится на сервере, оно появится в списке предметов отладки, и к нему можно подключиться. Учтите, что короткоживущие задания могут завершиться раньше подключения — в таком случае временно добавьте в код задержку.