Почему 1C:EDT не останавливается на точках останова при отладке и как это исправить?

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

При переходе на разработку в среде 1C:Enterprise Development Tools (1C:EDT) разработчики нередко сталкиваются с ситуацией: проект открывается, клиентское приложение «1С:Предприятие» запускается в режиме отладки, но установленные точки останова упорно игнорируются. Разберем по шагам, почему возникает эта проблема и как настроить рабочее окружение для корректной отладки.

В отличие от классического конфигуратора «1С:Предприятие 8», где долгое время использовался собственный протокол TCP/IP, среда 1C:EDT работает исключительно через HTTP-сервер отладки (HTTP Debug Server). Клиентское приложение 1С и среда разработки обмениваются отладочными пакетами по протоколу HTTP/HTTPS. Если на пути этого сетевого взаимодействия возникают преграды — корпоративные прокси-серверы, антивирусы или неверные настройки запуска — отладчик теряет связь с исполняемым кодом.

Причина 1. Блокировка отладочного HTTP-трафика системным или корпоративным прокси-сервером

Проанализируем наиболее частую причину сбоя в офисных и доменных сетях. Клиентское приложение 1С отправляет отладочные HTTP-запросы на локальный сервер отладки. Если в операционной системе настроен корпоративный прокси-сервер, эти запросы перенаправляются на внешний прокси вместо локального сокета. Прокси-сервер не может обработать внутренний трафик отладки, и точки останова перестают срабатывать.

Рассмотрим, как локализовать и устранить конфликт с прокси-сервером:

  1. Запустим приложение в режиме отладки из 1C:EDT.
  2. В открывшемся сеансе «1С:Предприятие» перейдем в главное меню: Сервис — Параметры (или «Настройки — Параметры»).
  3. Найдем поле Сервер отладки и скопируем указанное там сетевое имя хоста (URL).
  4. Откроем сетевые настройки операционной системы (параметры прокси-сервера).
  5. Добавим полученное доменное имя или IP-адрес сервера отладки в список исключений прокси (список адресов, для которых прокси не используется).

Если корпоративная политика запрещает менять системные настройки прокси, настроим исключения локально для виртуальной машины Java, на которой работает 1C:EDT. Для этого откроем конфигурационный файл 1cedt.ini в каталоге установки среды и добавим после директивы -vmargs следующие системные свойства:


-Dhttp.nonProxyHosts=localhost|127.0.0.1|имя_вашего_компьютера
-Dhttps.nonProxyHosts=localhost|127.0.0.1|имя_вашего_компьютера

Причина 2. Запрет отладки при перезапуске и параметры сеанса

Посмотрим на параметры конфигурации запуска в 1C:EDT. Если в настройках отладочной сессии или в окне аутентификации информационной базы установлен запрет отладки при перезапуске сеанса, клиент 1С после рестарта отключается от сервера отладки.

  1. В EDT откроем меню Запуск — Конфигурации отладки (Debug Configurations).
  2. Выберем целевую конфигурацию запуска и проверим параметры подключения к информационной базе.
  3. Убедимся, что флаг запрета отладки выключен, а сеанс запускается с правами администратора или пользователя, которому разрешена интерактивная отладка.

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

Разберем ситуацию, когда точка останова установлена в модуле регламентного задания, HTTP-сервиса или фонового процесса. По умолчанию отладчик подключается только к основному сеансу тонкого или толстого клиента. Чтобы отладчик перехватывал другие контексты исполнения:

  1. Перейдем в перспективу Отладка (Debug) в 1C:EDT.
  2. Откроем панель управления предметами отладки.
  3. Включим автоматическое подключение для нужных категорий: Фоновые задания, Серверные вызовы, Web-сервисы и HTTP-сервисы.

Причина 4. Рассинхронизация конфигурации в базе данных и проекта в EDT

1C:EDT хранит исходные тексты в файловой структуре рабочего пространства (workspace). Если при запуске отладки изменения не были переданы в информационную базу (например, из-за ошибки валидации или отключенного автоматического обновления базы), исполняемый байт-код в базе данных не соответствует строкам в редакторе EDT. В результате сервер отладки не может сопоставить контрольные суммы модулей и пропускает точки.

  1. Выполним команду принудительной синхронизации: контекстное меню проекта — Информационная база — Применить изменения структуры.
  2. Убедимся, что процесс обновления конфигурации базы данных завершился без ошибок.
  3. Повторно запустим сеанс отладки.

Причина 5. Случайное отключение всех точек останова в среде разработки

Выясним еще одну простую причину: в среде Eclipse / EDT предусмотрен глобальный режим пропуска всех точек останова (Skip All Breakpoints). Если случайно нажать комбинацию клавиш Ctrl+Alt+B, точки останова останутся визуально видимыми в коде, но станут перечеркнутыми, и отладчик будет их игнорировать.

Проверим панель Точки останова (Breakpoints) в EDT: кнопка «Пропустить все точки останова» должна быть неактивна.

Причина 6. Блокировка портов локальным брандмауэром и антивирусом

Проанализируем сетевую защиту рабочего места. HTTP-сервер отладки использует динамические или заданные в конфигурации TCP-порты для связи. Антивирусное ПО и сетевые экраны (брандмауэр Windows) могут блокировать входящие HTTP-соединения к локальному процессу отладки.

  1. Временно приостановим работу локального файрвола/антивируса для проверки гипотезы.
  2. В настройках брандмауэра добавим исполняемые файлы 1cedt.exe и 1cv8c.exe (а также javaw.exe) в список разрешенных сетевых приложений.
  3. Проверим права доступа пользователя на каталог рабочего пространства (workspace) и временные папки проектов EDT — у пользователя должен быть полный доступ на чтение и запись.

Таким образом, в большинстве случаев неработоспособность точек останова в 1C:EDT связана с сетевой маршрутизацией HTTP-отладки (прокси-серверами), конфликтом прав доступа к сокетам или рассинхронизацией исходного кода проекта с целевой базой данных.

← На главную