Отладка приложений

Расширенные возможности отладки

В процессе отладки можно использовать широкий набор возможностей, реализованных в разных инструментах 1C:EDT:

Разные данные для отладки одной конфигурации

Можно отлаживать свое приложение на разных данных. Например, один набор данных (информационная база) небольшой, тестовый, который легко запускается и быстро работает. А другой набор данных (информационная база) — полный, большой. На нем можно проверять, как ваше приложение работает на реальных данных в реальных условиях.

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

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

Отладка по протоколу HTTP

При отладке приложений в качестве транспортного протокола используется HTTP. Он позволяет «достучаться» до предметов отладки, которые не находятся на вашем компьютере или в вашей локальной сети.

Для запуска отлаживаемого приложения необходима информационная база, однако сам отладчик не нуждается в соединении с ней для получения отлаживаемой конфигурации. Он может получить конфигурацию из любого другого источника, например из .xml-файлов, расположенных в каталоге.

Отладка по протоколу HTTP

Архитектура отладки выглядит следующим образом:

В отладке участвуют отладчик, предметы отладки и сервер отладки.

Прямой передачи информации между отладчиком и предметами отладки нет. Все взаимодействие организуется через сервер отладки. Это основной элемент механизма. На сервере отладки организована очередь сообщений, через которую отладчик и предметы отладки передают информацию друг другу.

И сам отладчик, и предметы отладки взаимодействуют с сервером отладки по протоколу HTTP. Таким образом, неважно, где эти предметы отладки расположены.

Взаимодействие с сервером отладки выполняется по инициативе отладчика и предметов отладки. Для этого организуются дополнительные соединения. Их основное назначение — узнать, не появилась ли для них информация на сервере отладки. И если появилась, то получить эту информацию.

Таким образом, взаимодействие получается одностороннее. Информация все время передается с сервера отладки в отладчик и в предметы отладки.

Сервер отладки

Сервер отладки представляет собой отдельное приложение dbgs.exe. Можно увидеть его в диспетчере задач.

В параметре ownerPID у него указан идентификатор того приложения, которому принадлежит этот сервер отладки. В данном случае это конфигуратор «1С:Предприятия».

При работе в клиент-серверном варианте в параметре ownerPID у него будет указан идентификатор менеджера кластера «1С:Предприятия».

Основные функции сервера отладки заключаются в следующем:
  • Он хранит списки предметов отладки, доступных для использования, и списки подключенных предметов отладки;
  • Он транслирует команды 1C:EDT по управлению процессом отладки в команды предметам отладки (остановиться, продолжить исполнение и т. д.).
Подключение предметов отладки

При запуске отладочных сеансов приложения выполняют автоматическое подключение предметов отладки (как клиентского, так и серверного) к серверу отладки.

Наряду с этим можно настроить автоматическое подключение предметов отладки независимо от того, каким образом они были запущены. Для автоматического подключения предметов отладки можно создавать отборы. В них кроме самих предметов отладки можно указать конкретных пользователей, чьи сеансы вас интересуют, а также, если используется разделение данных, указать область информационной базы, которая будет отлаживаться.

Предметы отладки

В процессе отладки приложение представлено как набор отдельных предметов отладки, которые исполняются последовательно или параллельно.

Предмет отладки — это поток исполнения встроенного языка, характеризуемый совокупностью следующих параметров:
  • Идентификатор информационной базы;
  • Тип предмета отладки;
  • Имя пользователя, от имени которого исполняется код на встроенном языке;
  • Номер используемого сеанса.
Типы предметов отладки описывают контекст, в котором исполняется программный код, а также приложение, исполняющее этот код и, в некоторых случаях, источник этого кода:
  • Тонкий клиент — клиентский контекст, который исполняет тонкий клиент;
  • Веб-клиент — клиентский контекст, который исполняет веб-клиент;
  • Толстый клиент — клиентский контекст, который исполняет толстый клиент;
  • Сервер (файловый вариант) — серверный контекст, который исполняет клиентское приложение (тонкий клиент, веб-клиент или толстый клиент) или модуль расширения веб-сервера. Такой способ исполнения серверного контекста применяется в файловом варианте работы. Для удобства отладки часть таких потоков исполнения выделена в отдельный тип:
    • Фоновое задание (файловый вариант) — потоки исполнения, источником которых являются фоновые задания;
  • Сервер — серверный контекст, который исполняет кластер серверов. Для удобства отладки часть таких потоков исполнения выделена в отдельный тип:
    • Фоновое задание — потоки исполнения, источником которых являются фоновые задания;
  • Web-сервис — серверный контекст, источником которого являются Web-сервисы. В файловом варианте работы его исполняет модуль расширения веб-сервера, в клиент-серверном варианте — кластер серверов;
  • HTTP-сервис — серверный контекст, источником которого являются HTTP-сервисы. В файловом варианте работы его исполняет модуль расширения веб-сервера, в клиент-серверном варианте — кластер серверов;
  • Стандартный интерфейс OData — серверный контекст, источником которого являются действия, выполняемые в результате вызова методов интерфейса OData. В файловом варианте работы его исполняет модуль расширения веб-сервера, в клиент-серверном варианте — кластер серверов;
  • COM-соединение — контексты, которые исполняет COM-сервер в результате обращения другого приложения к информационной базе через внешнее соединение:
    • в файловом варианте работы это и клиентский и серверный контексты;
    • в клиент-серверном варианте работы это клиентский контекст. Серверный контекст исполняет кластер серверов и он доступен в предмете отладки, имеющем тип Сервер;
  • Клиент (мобильное приложение) — клиентский контекст, который исполняет приложение мобильной платформы;
  • Сервер (мобильное приложение) — серверный контекст, который исполняет мобильное приложение. Для удобства отладки часть таких потоков исполнения выделена в отдельный тип:
    • Фоновое задание (мобильное приложение) — потоки исполнения, источниками которых являются фоновые задания;
  • Мобильный клиент– клиентский контекст, который исполняет мобильный клиент.

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

Такой подход, с одной стороны, позволяет отключить от отладки те предметы, которые не относятся к отлаживаемому алгоритму, но постоянно исполняются (например, фоновые задания). С другой стороны это позволяет, при удаленной отладке, например, отлаживать только тот код, который запущен конкретным пользователем.

Перспектива «Отладка»

Перспектива Отладка — это основное рабочее пространство для отладки приложений.

Эта перспектива открывается автоматически при остановке исполнения встроенного языка на точке останова.

Открыть перспективу «Отладка»
Открыть перспективу Отладка можно несколькими способами:
  • В панели перспектив нажмите (Открыть перспективу)Отладка;
  • В главном меню нажмите Окно > Перспектива > Открыть перспективу > Другое... > Отладка.

В стандартный состав перспективы Отладка входят следующие элементы:

  1. Панели:
    • Отладка — эта панель показывает доступные предметы отладки и текущий стек исполнения;
    • Структура проекта — эта панель показывает структуру приложения в виде совокупности обычных файлов, а не в виде дерева объектов конфигурации;
    • Серверы — не используется при разработке прикладных решений «1С:Предприятия»;
    • Навигатор — эта панель показывает список приложений и их элементов, которые разрабатываются с помощью 1C:EDT: проекты конфигураций, проекты расширений конфигураций, а также проекты внешних отчетов и обработок.
  2. Область редакторов. При остановке исполнения встроенного языка в этой области открывается редактор встроенного языка. В режиме отладки он имеет ряд дополнительных функций, облегчающих отладку.
  3. Панели:
  4. Панели:

Режим отладки

Отладка приложений возможна только в специальном режиме работы — режиме отладки. Стандартно этот режим работы выключен для всех компонентов «1С:Предприятия» по следующим причинам:
  • При выключенной отладке повышается безопасность работы приложений;
  • Включенный режим отладки влечет за собой повышенное использование ресурсов. Когда же отладка выключена, то вся инфраструктура для организации отладки отсутствует и не тратится время на «общение» с отладчиком.

В большинстве наиболее часто используемых сценариев отладки 1C:EDT автоматически запускает компоненты «1С:Предприятия» в режиме отладки. Однако есть ряд компонентов, которые необходимо заранее запустить в режиме отладки, либо заранее разрешить им работу в отладочном режиме.

Например, в клиент-серверном режиме работы для отладки серверных предметов необходимо, чтобы кластер серверов предварительно был запущен в режиме отладки. А для отладки Web- и HTTP-сервисов или веб-клиента нужно, чтобы отладка была разрешена в их публикации на веб-сервере.

Точки останова

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

В простейшем случае точка останова связана со строкой модуля и содержит номер строки. Исполнение остановится перед тем, как выполнить эту строку.

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

После того, как исполнение программы остановлено, можно посмотреть значения переменных, изменить их, выполнить один или несколько следующих операторов, посмотреть стек вызовов (последовательность исполнения методов, которая привела к данной точке) и т. д.

Пошаговое исполнение

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

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

Подробнее о пошаговом выполнении можно прочитать в «документации «1С:Предприятия»».