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


Практическое руководство. Использование визуализатора

Обновлен: Ноябрь 2007

Этот раздел относится к:

Выпуск

Visual Basic

C#

C++

Web Developer

Express

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Standard

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Pro и Team

Тема применяется Тема применяется

Только управляемый код

Тема применяется

Обозначения:

Тема применяется

Применимо

Тема не применяется

Неприменимо

Тема применяется, но команда по умолчанию сокрыта

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

Пользовательский визуализатор можно создать для объекта любого управляемого класса, за исключением Object и Array.

Архитектура визуализатора отладчика состоит из двух частей:

  • Сторона отладчика – код, который запускается в отладчике Visual Studio. Код со стороны отладчика создает и отображает пользовательский интерфейс визуализатора.

  • Сторона отлаживаемого кода – код, который выполняется внутри процесса, отлаживаемого в Visual Studio ( отлаживаемая программа).

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

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

Отлаживаемая и отладочная стороны взаимодействуют друг с другом с помощью класса Stream. Существуют методы, предназначенные для сериализации объекта данных в объект Stream и десериализации объекта Stream обратно в объект данных.

Код отлаживаемой стороны задается с помощью атрибута DebuggerVisualizer (DebuggerVisualizerAttribute).

Чтобы создать пользовательский интерфейс визуализатора на стороне отладчика, необходимо создать класс, который наследует от DialogDebuggerVisualizer, и переопределить метод DialogDebuggerVisualizer.Show, чтобы он отображал интерфейс.

Для отображения форм Windows, диалоговых окон и элементов управления визуализатора можно использовать интерфейс IDialogVisualizerService.

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

При работе с пользовательскими визуализаторами следует учитывать вопросы безопасности. См. раздел Вопросы безопасности визуализатора.

Описание архитектуры визуализатора см. в разделе Архитектура визуализатора.

Следующие процедуры иллюстрируют в общих чертах, что необходимо сделать для создания визуализатора. Подробности см. в разделе Пошаговое руководство. Написание визуализатора на C#.

Создание кода для отладочной стороны

  1. Используйте методы IVisualizerObjectProvider для получения визуализированного объекта на стороне отладчика.

  2. Создайте класс, который наследует от DialogDebuggerVisualizer.

  3. Переопределите метод DialogDebuggerVisualizer.Show, чтобы он отображал нужный интерфейс. Для отображения форм, диалоговых окон и элементов управления Windows в компонентах интерфейса используйте методы IDialogVisualizerService.

  4. Используйте DebuggerVisualizerAttribute, предоставив ему визуализатор (DialogDebuggerVisualizer).

Создание кода для отлаживаемой стороны

  1. Используйте DebuggerVisualizerAttribute, предоставив ему визуализатор (DialogDebuggerVisualizer) и источник объекта (VisualizerObjectSource). Если источник объекта не передан, будет использоваться источник объекта, заданный по умолчанию.

  2. Если визуализатор должен не только отображать, но и редактировать данные, необходимо переопределить метод TransferData или CreateReplacementObject из VisualizerObjectSource.

См. также

Задачи

Практическое руководство. Установка визуализатора

Практическое руководство. Тестирование и отладка визуализатора

Основные понятия

Архитектура визуализатора

Вопросы безопасности визуализатора

Другие ресурсы

Визуализаторы