Отладка нескольких процессов

Обычно современные решения, разработанные в Visual Studio для Mac, содержат несколько проектов, предназначенных для разных платформ. Например, решение может содержать проект мобильного приложения, основанный на данных из проекта веб-службы. При разработке такого решения может потребоваться запустить оба проекта одновременно для устранения неполадок. Начиная с выпуска Xamarin Cycle 9, в Visual Studio для Mac можно отлаживать несколько параллельно выполняющихся процессов. Это позволяет задавать точки останова, проверять значения переменных и просматривать потоки в нескольких работающих проектах. Такая ситуация называется отладкой нескольких процессов.

В этом руководстве будут рассматриваться некоторые изменения, внесенные в Visual Studio для Mac для поддержки отладки нескольких процессов, описываться настройка решений для отладки нескольких процессов и приводиться сведения о присоединении к существующим процессам с помощью Visual Studio для Mac.

Требования

Для отладки нескольких процессов требуется Visual Studio для Mac.

Изменения в интегрированной среде разработки

В целях упрощения процедуры отладки нескольких процессов в пользовательский интерфейс в Visual Studio для Mac был внесен ряд изменений. В Visual Studio для Mac обновлена панель инструментов "Отладка" и добавлен новый раздел Конфигурация решений в папку Параметры решений. Кроме того, теперь на панели "Потоки" будут отображаться выполняющиеся процессы и потоки для каждого процесса. В Visual Studio для Mac также будет выводиться несколько панелей отладки (по одной для каждого процесса) для определенных целей, например Выходные данные приложения.

Конфигурации решения

По умолчанию отдельный проект в Visual Studio для Mac будет отображаться в области Конфигурации решения панели инструментов отладки. При запуске сеанса отладки Visual Studio для Mac откроет этот проект и присоединит к нему отладчик.

Для запуска и отладки нескольких процессов в Visual Studio для Mac необходимо создать конфигурацию решения. Конфигурация решения описывает, какие проекты в решении следует включать при запуске сеанса отладки с помощью кнопки "Пуск" или при нажатии клавиши "Пуск " (↩ CMD-ВВОД). Следующий снимок экрана является примером решения в Visual Studio для Mac с несколькими конфигурациями решения:

A solution with multiple solution configurations

Части панели инструментов "Отладка"

Чтобы конфигурацию решения можно было выбирать с помощью всплывающего меню, были внесены изменения в панель инструментов "Отладка". На этом снимке экрана показаны части панели инструментов "Отладка":

The parts of the debug toolbar

  1. Конфигурация решения. Можно задать конфигурацию решения, щелкнув конфигурацию в разделе "Решение" на панели инструментов отладки и выбрав нужный вариант во всплывающем меню:

    A sample popup with solution configurations

  2. Целевой объект сборки. Определяет целевой объект сборки для проектов. Не изменился по сравнению с предыдущими версиями Visual Studio для Mac.

  3. Целевые устройства. Выбирает устройства, на которых будет выполняться решение. Для каждого проекта можно определить отдельное устройство или эмулятор:

    Popup showing the devices for a project

Несколько панелей отладки

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

Output Pad for a solution configuration

Несколько процессов и активный поток

Если один процесс достигает точки останова, его выполнение приостанавливается, тогда как другие процессы продолжают работать. В сценарии с одним процессом Visual Studio для Mac может с легкостью отображать в одном наборе панелей такие сведения, как потоки, локальные переменные, выходные данные приложения. Однако при наличии нескольких процессов с несколькими точками останова и, возможно, с несколькими потоками разработчик может не справиться с данными из сеанса отладки, который пытается отобразить сразу все сведения из всех потоков (и процессов).

Чтобы устранить эту проблему, Visual Studio для Mac будет выводить информацию только из одного потока за один раз. Это называется использованием активного потока. Активным потоком считается первый поток, который приостанавливается в точке останова. Активный поток — это поток, который находится в фокусе внимания разработчика. Команды отладки, такие как step Over ⇧️O (SHIFT-Cmd-O), будут выданы активному потоку.

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

Thread pad for a solution configuration

Потоки группируются по процессу, в котором они размещаются. Имя проекта и идентификатор активного потока будут отображаться полужирным шрифтом, а в области рядом с активным потоком появится стрелка вправо. На предыдущем снимке экрана активным потоком является поток № 1 в процессе с ИД 48703 (FirstProject).

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

Пошаговая отладка кода при остановке нескольких проектов

Если два (или более) проекта достигли точек останова, Visual Studio для Mac приостановит оба процесса. Будет поддерживаться только шаг с обходом в активном потоке. Остальные процессы будут приостановлены до тех пор, пока изменение области не позволит отладчику переключить фокус с активного потока. Рассмотрим следующий снимок экрана с отладкой двух проектов в Visual Studio для Mac:

Visual Studio for Mac debugging two projects

На этом снимке экрана каждое решение имеет собственную точку останова. При запуске отладки первая точка останова находится в строке 10 класса MainClass в проекте SecondProject. Поскольку точки останова есть в обоих проектах, останавливается каждый процесс. По достижении точки останова при каждом вызове действия Шаг с обходом Visual Studio для Mac будет выполнять шаг с обходом по коду в активном потоке.

Пошаговое выполнение кода ограничивается активным потоком, поэтому Visual Studio для Mac будет обрабатывать по одной строке кода, в то время как другой процесс все еще будет приостановлен.

Воспользуемся предыдущим снимком экрана в качестве примера: по завершении цикла for Visual Studio для Mac разрешит выполнение проекта FirstProject до обнаружения точки останова в строке 11 в классе MainClass. При каждой команде Шаг с обходом отладчик будет построчно перемещаться в проекте FirstProject, пока внутренние эвристические алгоритмы Visual Studio для Mac не переключат активный поток обратно на проект SecondProject.

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

Приостановка и возобновление процессов

Чтобы приостановить или возобновить процесс, щелкните процесс правой кнопкой мыши и в контекстном меню выберите команду Приостановить или Возобновить:

Pause or resume in the Thread pad

Внешний вид панели инструментов отладки будет меняться в зависимости от состояния отлаживаемых проектов. При выполнении нескольких проектов на панели инструментов "Отладка" будут отображаться кнопки Приостановить и Возобновить, если есть по крайней мере один выполняющийся и один приостановленный проект:

Debug toolbar

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

Отладка второго проекта

После запуска первого проекта в Visual Studio для Mac можно приступить к отладке второго проекта. Запустив первый проект, *щелкните правой кнопкой мыши второй проект на панели "Решение" и выберите пункт Начать отладку элемента:

Start Debugging Item

Создание конфигурации решения

Конфигурация решения указывает Visual Studio для Mac, какой проект следует запустить при инициации сеанса отладки с помощью кнопки Запустить. У каждого решения может быть несколько конфигураций. Это позволяет указать запускаемые проекты при отладке проекта.

Чтобы создать новую конфигурацию решения в Xamaring Studio, выполните следующие действия:

  1. Откройте диалоговое окно "Параметры решения" в Visual Studio для Mac и выберите "Выполнить > конфигурации".

    Solution Configuration in the Solution Options dialog

  2. Нажмите кнопку Создать, введите имя новой конфигурации решения и нажмите кнопку ОК. Новая конфигурация решения появится в окне Конфигурации:

    Naming a new solution configuration

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

    Selecting the project to start

Теперь на панели инструментов "Отладка" отображается конфигурация MultipleProjects, позволяющая выполнять отладку двух проектов одновременно.

Итоги

В этом руководстве рассматривалась процедура отладки нескольких процессов в Visual Studio для Mac. Здесь приводились некоторые изменения интегрированной среды разработки для поддержки процессов отладки и описывалось связанное поведение.