При переходе на разработку в среде 1C:Enterprise Development Tools (1C:EDT) разработчики нередко сталкиваются с ситуацией: проект открывается, клиентское приложение «1С:Предприятие» запускается в режиме отладки, но установленные точки останова упорно игнорируются. Разберем по шагам, почему возникает эта проблема и как настроить рабочее окружение для корректной отладки.
В отличие от классического конфигуратора «1С:Предприятие 8», где долгое время использовался собственный протокол TCP/IP, среда 1C:EDT работает исключительно через HTTP-сервер отладки (HTTP Debug Server). Клиентское приложение 1С и среда разработки обмениваются отладочными пакетами по протоколу HTTP/HTTPS. Если на пути этого сетевого взаимодействия возникают преграды — корпоративные прокси-серверы, антивирусы или неверные настройки запуска — отладчик теряет связь с исполняемым кодом.
Проанализируем наиболее частую причину сбоя в офисных и доменных сетях. Клиентское приложение 1С отправляет отладочные HTTP-запросы на локальный сервер отладки. Если в операционной системе настроен корпоративный прокси-сервер, эти запросы перенаправляются на внешний прокси вместо локального сокета. Прокси-сервер не может обработать внутренний трафик отладки, и точки останова перестают срабатывать.
Рассмотрим, как локализовать и устранить конфликт с прокси-сервером:
Если корпоративная политика запрещает менять системные настройки прокси, настроим исключения локально для виртуальной машины Java, на которой работает 1C:EDT. Для этого откроем конфигурационный файл 1cedt.ini в каталоге установки среды и добавим после директивы -vmargs следующие системные свойства:
-Dhttp.nonProxyHosts=localhost|127.0.0.1|имя_вашего_компьютера
-Dhttps.nonProxyHosts=localhost|127.0.0.1|имя_вашего_компьютера
Посмотрим на параметры конфигурации запуска в 1C:EDT. Если в настройках отладочной сессии или в окне аутентификации информационной базы установлен запрет отладки при перезапуске сеанса, клиент 1С после рестарта отключается от сервера отладки.
Разберем ситуацию, когда точка останова установлена в модуле регламентного задания, HTTP-сервиса или фонового процесса. По умолчанию отладчик подключается только к основному сеансу тонкого или толстого клиента. Чтобы отладчик перехватывал другие контексты исполнения:
Фоновые задания, Серверные вызовы, Web-сервисы и HTTP-сервисы.1C:EDT хранит исходные тексты в файловой структуре рабочего пространства (workspace). Если при запуске отладки изменения не были переданы в информационную базу (например, из-за ошибки валидации или отключенного автоматического обновления базы), исполняемый байт-код в базе данных не соответствует строкам в редакторе EDT. В результате сервер отладки не может сопоставить контрольные суммы модулей и пропускает точки.
Выясним еще одну простую причину: в среде Eclipse / EDT предусмотрен глобальный режим пропуска всех точек останова (Skip All Breakpoints). Если случайно нажать комбинацию клавиш Ctrl+Alt+B, точки останова останутся визуально видимыми в коде, но станут перечеркнутыми, и отладчик будет их игнорировать.
Проверим панель Точки останова (Breakpoints) в EDT: кнопка «Пропустить все точки останова» должна быть неактивна.
Проанализируем сетевую защиту рабочего места. HTTP-сервер отладки использует динамические или заданные в конфигурации TCP-порты для связи. Антивирусное ПО и сетевые экраны (брандмауэр Windows) могут блокировать входящие HTTP-соединения к локальному процессу отладки.
1cedt.exe и 1cv8c.exe (а также javaw.exe) в список разрешенных сетевых приложений.Таким образом, в большинстве случаев неработоспособность точек останова в 1C:EDT связана с сетевой маршрутизацией HTTP-отладки (прокси-серверами), конфликтом прав доступа к сокетам или рассинхронизацией исходного кода проекта с целевой базой данных.