Поделиться через


Отладка расширения Visual Studio

При отладке расширения Visual Studio специальный экземпляр Visual Studio с именем "Экспериментальный экземпляр" используется для размещения расширения во время запуска отладчика в главной интегрированной среде разработки Visual Studio. Два экземпляра выполняются независимо друг от друга. В этой статье описывается отладка расширений, созданных с помощью пакета SDK для VisualStudio.Extensibility при выполнении в экспериментальном экземпляре интегрированной среды разработки VS.

Процессы расширения

Процесс отладки немного отличается в зависимости от того, выполняется ли расширение в процессе или вне процесса. Ознакомьтесь с первым расширением VisualStudio.Extensibility, совместимым с VSSDK. При использовании расширения вне процесса расширение выполняется в выделенном процессе для расширений Visual Studio. Этот процесс называется Microsoft.ServiceHub.Host.Extensibilityброкером всех связей между процессом интегрированной среды разработки Visual Studio и процессом, в котором размещается расширение. При запуске расширения с помощью F5 Visual Studio запускает экспериментальный экземпляр Visual Studio и подключается к процессу, в котором размещено расширение. Обычно вам не нужно беспокоиться о точном процессе, так как при запуске отладчика из проекта расширения, нажав клавишу F5 Visual Studio IDE, Visual Studio находит правильный процесс для подключения отладчика к.

При запуске сеанса отладки сборка расширения и ее символы не загружаются немедленно. Перед загрузкой расширения Visual Studio отслеживает места, в которых можно активировать расширение. Это управляется во внутреннем экземпляре VisualStudioContribution. Даже до загрузки расширения Visual Studio содержит сведения о том, где его можно активировать, например, когда пользователь выбирает определенный пункт меню, нажимает кнопку панели инструментов или загружает файл определенного типа в редактор. Сборка расширения не загружается, пока она не будет активирована в интегрированной среде разработки. Поэтому при отладке сначала необходимо выполнить действия в интегрированной среде разработки Visual Studio, чтобы активировать расширение для загрузки. Например, может потребоваться выбрать пункт меню расширения или кнопку панели инструментов. На этом этапе сборка расширения загружается, код инициализации выполняется, и вы можете попасть в точки останова и выполнить пошаговое выполнение кода. Первый код, выполняемый в расширении, — это InitializeAsync метод Extension класса, а следующий метод — InitializeServices.

Процессы и стеки вызовов

Если расширение выполняется в процессе, стек вызовов включает кадры стека Visual Studio, а также кадры стека расширения. Символы обычно недоступны для Visual Studio, но можно увидеть вызовы, в которых Visual Studio вызывает расширение.

С расширением вне процесса вы увидите только стек вызовов расширения. Кадры стека Visual Studio находятся в отдельном процессе. Visual Studio вызывает расширение через интерфейсы, совместимые с JsonRpc, узел ServiceHub направляет вызов, а затем выполняется в процессе обратного вызова. Элемент управления возвращается в Visual Studio при возврате обратного вызова.

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

В узле ServiceHub есть некоторый внутренний код, который обрабатывает брокер RPC. Если сбой возникает в этом слое, он не отображается для вас. Такие ошибки следует сообщать как о проблемах с продуктом.

Отладка расширения в экспериментальном экземпляре Visual Studio

  1. Откройте проект расширения.

  2. Настройте точку останова InitializeServices , например, в методе расширения в основном классе, производным от Extension. Чтобы задать точку останова в строке кода, щелкните строку и нажмите клавишу F9.

  3. В главном меню выберите "Отладка > начать отладку " или нажмите клавишу F5. Запускается экспериментальный экземпляр Visual Studio; в то же время запускается процесс узла ServiceHub.

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

  5. Visual Studio останавливается в точке останова.

    Снимок экрана: отладка расширения Visual Studio.

Совет

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

Отладка расширения с помощью Обозреватель диагностики

Дополнительные сведения см. в Обозреватель диагностики расширяемости VisualStudio.Extensibility.