Имя: Пароль:
1C
1С v8
1С Отладка функций на сервере (Linux вариант)
,
0 IvanLex
 
27.01.22
15:05
Доброго времени суток.

Проблема: Не работает отладка функций, исполняемых на сервере.

Исходные данные:

Сервер 1С:
ОС Debian 10, 4 ядра, 8GB ОЗУ.

Сервер СУБД:
ОС Debian 10, 8 ядра, 16GB ОЗУ, PostgreSQL-1c.

Рабочее место:
ОС Windows

Программное обеспечение:
1С 8.3.20.1590

-------------------------
На сервере 1С:
файл /opt/1cv8/x86_64/8.3.20.1590/srv1cv83.conf линк в /etc/default/srv1cv83
файл /opt/1cv8/x86_64/8.3.20.1590/srv1cv83 линк в /etc/init.d/srv1cv83

systemctl daemon-reload && systemctl start srv1cv83

Система работает.
Пользователь с АРМ через консоль MMC создает ИБ - БД на СУБД создается, 1С запускается как в режиме "Предприятие", так и в режиме "Конфигуратора".

-------------------------
Для отладки кода программисты просят включить режим отладки на сервере

В файле /etc/default/srv1cv83 (он же файл /opt/1cv8/x86_64/8.3.20.1590/srv1cv83.conf) ставим SRV1CV8_DEBUG=1, перезапускаем сервис.
Проверяем:
ps -fU usr1cv8

Выхлоп:
UID         PID    PPID  C STIME TTY    TIME CMD
usr1cv8 2090517       1  0 янв21 ?  00:00:00 /lib/systemd/systemd --user
usr1cv8 2090518 2090517  0 янв21 ?  00:00:00 (sd-pam)
usr1cv8 2090537 2090517  0 янв21 ?  00:00:00 /usr/bin/pipewire
usr1cv8 2090540 2090517  0 янв21 ?  00:00:00 /usr/libexec/tracker-miner-fs
usr1cv8 2090542 2090517  0 янв21 ?  00:00:00 /usr/bin/dbus-daemon --session --address=systemd: --nofork --nopidfile --systemd-activation --syslog-only
usr1cv8 2090548 2090537  0 янв21 ?  00:00:00 /usr/bin/pipewire-media-session
usr1cv8 2090553 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfsd
usr1cv8 2090568 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfsd-fuse /run/user/998/gvfs -f
usr1cv8 2090575 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfs-udisks2-volume-monitor
usr1cv8 2090581 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfs-goa-volume-monitor
usr1cv8 2090585 2090517  0 янв21 ?  00:00:00 /usr/libexec/goa-daemon
usr1cv8 2090593 2090517  0 янв21 ?  00:02:06 /usr/libexec/goa-identity-service
usr1cv8 2090598 2090517  0 янв21 ?  00:00:16 /usr/libexec/gvfs-afc-volume-monitor
usr1cv8 2090604 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfs-gphoto2-volume-monitor
usr1cv8 2090609 2090517  0 янв21 ?  00:00:00 /usr/libexec/gvfs-mtp-volume-monitor
usr1cv8 2454989       1  0 14:44 ?  00:00:34 /opt/1cv8/x86_64/8.3.20.1590/ragent -daemon -debug
usr1cv8 2455005 2454989  2 14:44 ?  00:03:05 /opt/1cv8/x86_64/8.3.20.1590/rmngr -port 1541 -host 059-1-srv-017 -range 1560:1591 -debug -tcp -clstid 6a5e2178-4d3d-4aea-942c-c3526703c820
usr1cv8 2455097 2454989 15 14:44 ?  00:16:27 /opt/1cv8/x86_64/8.3.20.1590/rphost -range 1560:1591 -reghost 059-1-srv-017 -regport 1541 -pid a35a0bb1-01ec-47d8-81df-64c2bab08576 -debug -tcp
usr1cv8 2456221       1  0 14:54 ?  00:00:00 /opt/1cv8/x86_64/8.3.20.1590/ras cluster --port=1545

Видим -debug -tcp, но отладка не идёт.
Читаю ман 1С, вижу про файл /opt/1cv8/x86_64/8.3.20.1590/conf/comcntrcfg.xml
Создаем файл с содержимым:

<config xmlns="http://v8.1c.ru/v8/comcntrcfg">
    <debugconfig debug="true" protocol="tcp" debuggerURL="tcp://localhost:1560"/>
</config>

Перезапускаем сервис, отладка не идет.
В 1С видно сервер, но отладка не идет.

Сервер 1С, СУБД и АРМ в одной подсети на соседних ip, брандмауэр отключен. telnet показывает что порты открыты, слушаются и принимают соединения. Но отладка не идет.

Далее нахожу на просторах тырнета, что проблема у многих, и многие опустили руки, решая данную проблему и просто переключились в режим http, кто то говорит что медленнее, но зато нет проблем.

Меняем файл /opt/1cv8/x86_64/8.3.20.1590/srv1cv83 (он же файл /etc/init.d/srv1cv83):
Строку:
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug"
меняем на:
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug -http"

На всякий случай удаляем файл /opt/1cv8/x86_64/8.3.20.1590/conf/comcntrcfg.xml
Перезапускаем сервис, отладка не идет.

Проверяем еще раз:
ps -fU usr1cv8
Результат тот же один в один.

Прошу помощи.
Заранее всем откликнувшимся спасибо.
1 Djelf
 
27.01.22
15:30
Сначала останови сервер 1С, потом редактируй конфиг, потом запускай.
2 IvanLex
 
27.01.22
15:32
(1) А есть разница? Конфиг то изменен. Но сделаю с остановкой. Надеюсь что поможет. Но что то я не уверен.
3 fisher
 
27.01.22
15:33
(0) > В 1С видно сервер
В смысле - в предметах отладки серверные сеансы появляются, подключение к ним происходит но точки останова не срабатывают?
4 IvanLex
 
27.01.22
15:41
(3) Точно. Серверные сеансы есть, но на точках остонова не останавливается, как будто их не ставили.
5 IvanLex
 
27.01.22
15:42
(1) То же самое. Сервер стопорнул. Конфиги проверил что отредактированы верным образом. Стартанул сервис - результат тот же.
6 Djelf
 
27.01.22
15:45
(2) Есть
7 fisher
 
27.01.22
15:47
(4) Не сталкивался с таким. Идей нет.
8 Djelf
 
27.01.22
15:48
+(6) У меня так было, возможно есть разница на разных платформах.
9 Dmitrii
 
гуру
27.01.22
16:01
На сервере стоит клиент 1С? Если запустить конфигуратор непосредственно на сервере и попытаться отладить, будет отладка работать?
10 fisher
 
27.01.22
16:07
(9) +1
Предмет отладки виден в конфигураторе и подключается, но точка останова все равно не срабатывает на строке кода.
Данная проблема актуальна при отладке по протоколу TCP. Причина в том что отладчик не может принимать входящие соединение из-за того что брандмауер или фаервол блокируют сетевое взаимодействие между отладчиком и предметом отладки. Тут нужно понимать, что отладчик не только устанавливает исходящее соединение с предметом отладки, но также должен иметь возможность принимать входящее соединение. Проблема решается отключением фаервола на компьютере где запущен отладчик либо открытием входящих соединений на портах 1560-1591 для исполняемого файла 1cv8.exe.
11 LienXo
 
27.01.22
16:08
Было такое на некоторых релизах. Попробуй в режиме http запустить отладку
12 Dmitrii
 
гуру
27.01.22
16:11
(11) Уже было. В (0) описано.
13 1Сергей
 
27.01.22
16:15
И много вас таких, у кого одинесина на линупсе крутится?
14 Dmitrii
 
гуру
27.01.22
16:16
(13) Ты так это пишешь, будто это что-то плохое.
15 1Сергей
 
27.01.22
16:18
(14) Ничего плохого в мазохизме не вижу)
16 fisher
 
27.01.22
16:23
(15) Я не проверял, но ходят слухи что с тех пор как фрешевцы сами стали есть этот кактус, стабильность работы линуксового сервера приложений улучшилась.
17 Dmitrii
 
гуру
27.01.22
16:26
Вы в (0) параметры "сервера" видели?
>> Сервер 1С: 4 ядра, 8GB ОЗУ.
У меня в телефоне памяти больше.
С такими ресурсами на винде оно вообще еле шевелилось бы.
18 1Сергей
 
27.01.22
17:45
(17) а на малинке можно поднять?
19 andy_minsk
 
27.01.22
18:10
(0) Может оффтоп, но однажды всем кокандом искали, почему в линуксе отладчик не срабатывает. Пока не выгрузили в файловую и не увидели, что он туда не попадает в принципе. Но там всякие переопределения в расширениях как-то замутили. В обычных случаях отладка в линуксе работает норм, иногда требует рестарта, но это фигня.
С памятью, да, экстремально как-то, сурово.
20 IvanLex
 
28.01.22
04:51
Создал новую виртуалку с Debian 11.
Установил 1с сервер 8.3.20.1590

Проверил, что все запускается.
Прежде чем править конфигурационные файлы - ОСТАНОВИЛ службы.
Отредактировал файлы что бы включить отладку.
Запустил службу - отладка функций исполняемых на сервере не работает.

Кто то говорит что требуется магия - ребутнул сервер, отладка не работает.
21 IvanLex
 
28.01.22
04:52
(17) Это рекомендация 1с требуемых ресурсов для малого внедрения.
https://its.1c.ru/db/metod8dev/content/5810/hdoc

Кстати всё шустро бегает.

А на винде сама винда столько потребляет не оставляя ничего самой 1с.
22 IvanLex
 
28.01.22
04:54
(11) попробовал дописать ключ -http, но сервер все равно продолжает работать в режиме -debug -tcp. dbgs в списке запущенных процессов отсутствует.
23 IvanLex
 
28.01.22
05:00
(10) Все порты открыты, брандмауер на Windows-машине отключен. На Linux машине разрешены все входящие соединения. Все машины (Место пользователя, Сервер 1С, Сервер СУБД) на соседних ip. Telnet показывает что порты все открыты, слушаются и соединения устанавливаются.

Но ладно, хрен с ним с tcp.
Я http так же не могу включить.
(20)
Уже создал новую виртуалку с Debian 11. Установил 1с сервер 8.3.20.1590. Проверил, что все запускается. Прежде чем править конфигурационные файлы - ОСТАНОВИЛ службы. Отредактировал файлы что бы включить отладку. Запустил службу - отладка функций исполняемых на сервере не работает. Подправил файл /opt/1cv8/x86_64/8.3.20.1590/srv1cv83 (он же файл /etc/init.d/srv1cv83):
[ "x$SRV1CV8_DEBUG" == "x1" ] && cmdline="$cmdline -debug -http"

но сервер все равно продолжает работать в режиме -debug -tcp. dbgs в списке запущенных процессов отсутствует.
24 IvanLex
 
28.01.22
06:55
Всё получилось.

Оказывается, останавливать службу, перезапускать её - абсолютно бесполезно - не помогло даже на виртуалке.
Но после перезапуска виртуалки всё заработало.

Ребутнул основной сервер полностью - то же всё заработало.

Теперь отладка работает, правда по http, отладку по tcp сделать не получилось, но это не критично.
25 fisher
 
28.01.22
09:58
(24) > Оказывается, останавливать службу, перезапускать её - абсолютно бесполезно - не помогло даже на виртуалке. Но после перезапуска виртуалки всё заработало.
Странно. Интересно, какое этому может быть объяснение.
26 ansh15
 
28.01.22
10:21
Непонятно, для чего тогда здесь пишут https://its.1c.ru/db/v8319doc#bookmark:cs:TI000000120
что "При работе сервера «1С:Предприятия» в режиме «демона» не поддерживается отладка с использованием протокола HTTP"
Или это уже безнадежно устаревшая информация.
Вышла тестовая 8.3.20.1710, там есть исправленные ситуации с отладкой.
27 IvanLex
 
31.01.22
13:01
(25) Мистика.
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой