Работа с 1С:Предприятие на платформе Linux требует особого подхода к отладке — здесь нет привычного интерфейса Windows, а конфигурирование осуществляется через командную строку и файлы настроек. Многие разработчики сталкиваются с трудностями при попытке запустить отладчик или проанализировать логи ошибок, особенно если опыт работы с Linux минимален. Эта статья поможет разобраться, как правильно включить отладку 1С на Linux, настроить серверные и клиентские компоненты, а также где искать критические логи для диагностики проблем.

В отличие от Windows-версии, где отладка активируется через графический интерфейс, в Linux процесс включает редактирование конфигурационных файлов, работу с systemd и использование утилит вроде strace или gdb. Мы рассмотрим все этапы — от базовой настройки до продвинутых техник, включая отладку через удалённый доступ с использованием SSH-туннеля, что особенно актуально для облачных серверов. Если вы администрируете 1С на Ubuntu, CentOS или Debian, эта инструкция станет вашим гидом.

1. Подготовка системы: проверка версий и прав доступа

Прежде чем включать отладку, убедитесь, что ваша система соответствует минимальным требованиям. Версия 1С:Предприятие для Linux должна быть не ниже 8.3.18 — в более ранних релизах отсутствует поддержка некоторых отладочных функций. Проверьте версию командой:

apt list --installed | grep 1c-enterprise

Также критично наличие прав sudo — без них вы не сможете редактировать системные файлы или перезапускать службы. Если вы работаете в облаке (например, на AWS или Yandex Cloud), убедитесь, что ваш пользователь входит в группу sudoers. Проверить это можно командой:

groups $(whoami)
  • 🔹 Минимальные требования:
    • ОС: Ubuntu 20.04+, CentOS 7/8, Debian 10+
    • 1С:Предприятие: версия 8.3.18 и выше
    • Права: доступ к sudo или root
  • 🔹 Дополнительные пакеты: установите strace, gdb и net-tools для расширенной отладки:
    sudo apt install strace gdb net-tools  # Для Debian/Ubuntu
    

    sudo yum install strace gdb net-tools # Для CentOS/RHEL

⚠️ Внимание: На виртуальных серверах с ограниченными ресурсами (менее 2 ГБ ОЗУ) отладка через gdb может привести к падению системы. В таких случаях используйте лог-файлы или удалённую отладку.
📊 Какую ОС вы используете для 1С на Linux?
Ubuntu
CentOS
Debian
Другую

2. Настройка отладки на стороне сервера 1С

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

/etc/1c/conf/srv1cv83.conf

Откройте файл с правами суперпользователя:

sudo nano /etc/1c/conf/srv1cv83.conf

Добавьте или раскомментируйте следующие параметры:

[service]

debug = true

debug_port = 1560

debug_break = false # Разрешает остановку на точках останова

После сохранения изменений перезапустите службу:

sudo systemctl restart srv1cv83
  • 🔧 Ключевые параметры:
    • debug = true — включает отладочный режим
    • debug_port = 1560 — порт для подключения отладчика (по умолчанию 1560)
    • debug_break = false — если true, сервер будет останавливаться на точках останова (может замедлить работу)
  • 🔄 Проверка статуса: убедитесь, что служба запущена без ошибок:
    sudo systemctl status srv1cv83

☑️ Настройка серверной отладки

Выполнено: 0 / 5

3. Включение отладки в клиентском приложении

Для отладки клиентской части (например, тонкого или толстого клиента) необходимо запускать 1С:Предприятие с специальными ключами. Основные параметры запуска:

Параметр Описание Пример
--debug Включает отладочный режим 1cv8 --debug
--debug-port Указывает порт для отладки (по умолчанию 1560) 1cv8 --debug-port=1570
--debugger-brk Останавливает выполнение на первой строке кода 1cv8 --debugger-brk
--debugger-attach Подключается к уже запущенному отладочному серверу 1cv8 --debugger-attach=localhost:1560

Пример полной команды для запуска толстого клиента с отладкой:

1cv8 DEBUG=1 DEBUG_PORT=1570 /F "File=ib_name;Usr=admin;Pwd=password"

Если вы используете веб-клиент, отладка настраивается через файл конфигурации apache2.conf или nginx.conf (в зависимости от веб-сервера). Добавьте в секцию виртуального хоста:

SetEnv 1C_DEBUG 1

SetEnv 1C_DEBUG_PORT 1570

⚠️ Внимание: При отладке веб-клиента через nginx может потребоваться перезагрузка сервиса php-fpm, так как он кэширует переменные окружения. Используйте команду sudo systemctl restart php8.1-fpm (версия PHP может отличаться).

4. Работа с лог-файлами 1С в Linux

Логи 1С:Предприятие в Linux хранятся в стандартных местах, но их расположение зависит от типа запуска (сервер, клиент, фоновое задание). Основные пути:

  • 📁 Серверные логи: /var/log/1C/srv1cv83/ (или /opt/1cv8/log/ в некоторых дистрибутивах)
  • 📁 Логи клиента: ~/.1cv8/1cv8/log/ (для текущего пользователя)
  • 📁 Логи веб-сервера: /var/log/apache2/error.log или /var/log/nginx/error.log

Чтобы включить расширенное логирование, отредактируйте файл /etc/1c/conf/srv1cv83.conf и добавьте:

[log]

level = debug

path = /var/log/1c/debug.log

max_size = 100 # Максимальный размер лога в МБ

Для анализа логов в реальном времени используйте команду:

tail -f /var/log/1c/srv1cv83/current.log

Если логи не обновляются, проверьте права на папку:

sudo chown -R usr1cv8:grp1cv8 /var/log/1c/

sudo chmod -R 755 /var/log/1c/

Как найти логи для конкретного пользователя?

Логи клиентских сессий хранятся в папке ~/.1cv8/1cv8/log/ и именуются по шаблону 1cv8_YYYYMMDD_HHMMSS.log. Чтобы найти логи для конкретного пользователя, используйте команду:

find ~/.1cv8/1cv8/log/ -name "*.log" -exec grep -l "ИмяПользователя" {} \;

Это поможет отфильтровать логи по имени пользователя, указанному в строке подключения.

5. Удалённая отладка через SSH-туннель

Если сервер 1С расположен на удалённом Linux-сервере (например, в облаке), для отладки можно использовать SSH-туннель. Это позволяет подключиться к отладочному порту сервера с локальной машины. Схема работы:

  1. На локальной машине (Windows/Linux) запустите команду для создания туннеля:
    ssh -L 1560:localhost:1560 пользователь@сервер_1c

    Здесь 1560 — порт отладки на сервере, пользователь@сервер_1c — данные для подключения по SSH.

  2. На сервере убедитесь, что отладка включена (как описано в разделе 2).
  3. На локальной машине подключитесь к 1С через Конфигуратор, указав в настройках отладки адрес localhost:1560.

Для автоматизации процесса добавьте конфигурацию туннеля в файл ~/.ssh/config:

Host 1c-debug

HostName сервер_1c

User пользователь

LocalForward 1560 localhost:1560

Теперь туннель будет создаваться командой:

ssh 1c-debug
⚠️ Внимание: При использовании SSH-туннеля через Jump Host (промежуточный сервер) необходимо настроить цепочку туннелей или использовать параметр -J в SSH. Например:
ssh -J пользователь@jump_host пользователь@сервер_1c -L 1560:localhost:1560
💡

Если отладка через SSH-туннель работает нестабильно, попробуйте изменить порт на сервере (например, на 1570) и обновите настройки в srv1cv83.conf и команде SSH. Это поможет избежать конфликтов с другими сервисами.

6. Продвинутые техники: strace и gdb

Для низкоуровневой отладки (например, при падении сервера 1С) используйте системные утилиты strace и gdb. Эти инструменты позволяют отслеживать системные вызовы и анализировать дампы памяти.

Пример использования strace:

strace -f -o /tmp/1c_trace.log /opt/1cv8/8.3.20.1549/bin/ragent

Эта команда запишет все системные вызовы процесса ragent в файл /tmp/1c_trace.log. Для анализа ошибок ищите в логе строки с EFAULT, ENOENT или SEGV.

Пример использования gdb:

  1. Найдите PID процесса 1С:
    ps aux | grep ragent
  2. Подключитесь к процессу через gdb:
    sudo gdb -p PID
  3. Получите трассировку стека (при падении):
    bt full

Для автоматического создания дампа при падении сервера добавьте в /etc/systemd/system/srv1cv83.service.d/override.conf:

[Service]

LimitCORE=infinity

После этого дампы будут сохраняться в /var/lib/systemd/coredump/. Анализировать их можно командой:

coredumpctl gdb PID
💡

Используйте strace для диагностики проблем с файловой системой или правами доступа, а gdb — для анализа сегментационных ошибок (segmentation fault) и падений сервера.

7. Типичные ошибки и их решения

При настройке отладки 1С на Linux часто возникают специфические ошибки. Рассмотрим наиболее распространённые и способы их устранения:

Ошибка Причина Решение
Connection refused при подключении к порту 1560 Сервис отладки не запущен или заблокирован фаерволом Проверьте sudo systemctl status srv1cv83 и настройки ufw/iptables
Permission denied при записи логов Недостаточно прав на папку /var/log/1c/ Выполните sudo chown -R usr1cv8:grp1cv8 /var/log/1c/
Отладчик не останавливается на точках останова Параметр debug_break = false в конфиге Установите debug_break = true и перезапустите службу
Segmentation fault при запуске 1С Повреждение библиотек или несовместимость версий Проверьте зависимости: ldd /opt/1cv8/8.3.20.1549/bin/1cv8

Если проблема не решена, проверьте логи ядра:

dmesg | grep 1cv8

Часто там содержатся критические ошибки, не попадающие в стандартные логи 1С.

FAQ: Частые вопросы по отладке 1С на Linux

Можно ли использовать отладчик из Windows для подключения к Linux-серверу?

Да, но для этого необходимо настроить SSH-туннель (как описано в разделе 5). После создания туннеля в Конфигураторе Windows укажите адрес localhost:1560 (или другой порт, если вы его меняли). Убедитесь, что на сервере в srv1cv83.conf разрешено внешнее подключение (debug_allow_external = true).

Почему логи 1С не обновляются в реальном времени?

Это может быть связано с буферизацией записи или недостаточными правами. Попробуйте:

  1. Отключить буферизацию в настройках лога (buffered = false в конфиге).
  2. Использовать tail -F вместо tail -f для отслеживания вращающихся логов.
  3. Проверить права на папку логов (chmod 775 /var/log/1c/).
Как отладить фоновое задание в Linux?

Фоновые задания в 1С на Linux отлаживаются через журнал регистрации или strace. Чтобы включить логирование для фоновых задач, добавьте в srv1cv83.conf:

[background-jobs]

log_level = debug

log_path = /var/log/1c/background.log

Для отладки конкретного задания найдите его PID через ps aux | grep 1cv8 и подключитесь через gdb.

Какие порты нужно открыть для удалённой отладки?

По умолчанию используется порт 1560, но вы можете изменить его в конфиге. Для работы через фаервол (ufw или iptables) разрешите трафик:

sudo ufw allow 1560/tcp

Если отладка идёт через SSH-туннель, открывать порты на сервере не требуется — весь трафик идёт по зашифрованному каналу SSH (порт 22).

Где хранятся дампы памяти при падении сервера 1С?

Если настроено создание дампов (см. раздел 6), они сохраняются в /var/lib/systemd/coredump/. Чтобы проанализировать дамп, используйте:

coredumpctl list

coredumpctl info PID

coredumpctl gdb PID

Для автоматического сохранения дампов в отдельную папку добавьте в /etc/systemd/coredump.conf:

[Coredump]

Storage=external

Compress=yes

ExternalSizeMax=1G