Como: Gravar um visualizador

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Somente Gerenciador

Padrão

Somente Gerenciador

PRO e equipe

Somente Gerenciador

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

Você pode gravar um visualizador personalizado para um objeto de qualquer classe gerenciada exceto para Object ou Array.

A arquitetura de um visualizador do elemento a ser depurado tem duas partes:

  • O debugger side executa com o depurador do Visual Studio.O código do debugger-side cria e exibe a interface do usuário para seu visualizador.

  • O debugger side executa com o processo do Visual Studio que está depurando (o debuggee).

O objeto de dados que você deseja visualizar (um objeto String por exemplo), existe no processo do elemento a ser depurado.Portanto, o lado a ser depurado tem que enviar esse objeto de dados para o lado do depurador, que pode exibí-lo usando uma interface de usuário que você cria.

O debuggee side recebe esse objeto de dados para ser visualizado de um object provedor que implementa o IVisualizerObjectProvider interface. O lado a ser depurado envia o objeto de dados por meio de objeto de fonte, que é derivada de VisualizerObjectSource. O objeto provedor também pode enviar dados de volta para a objeto fonte, que permite a você gravar um visualizador que edita, bem sistema autônomo exibe, dados.O provedor de objeto pode ser substituído para falar para o avaliador da expressão e, portanto, para a object fonte

O debuggee side e debugger side se comunicar entre si por meio de Stream. Métodos são fornecidos para serializar um objeto de dados em um Stream e desserializar o Stream volta para um objeto de dados.

O código do debuggee side é especificado usando o atributo DebuggerVisualizer (DebuggerVisualizerAttribute).

Para criar a interface do usuário visualizador no debuggee side, você deve criar uma classe que herda de DialogDebuggerVisualizer e substituem a DialogDebuggerVisualizer.Show método para exibir a interface.

Você pode usar IDialogVisualizerService Para exibir Windows Forms, caixas de diálogo e controles de seu visualizador.

Suporte para tipos genéricos é limitado.Você pode escrever um visualizador para um destino que é um tipo genérico somente se o tipo genérico for um tipo aberto.Essa restrição é igual a restrição ao usar o DebuggerTypeProxy atributo. Para obter detalhes, consulte:Usando um atributo DebuggerTypeProxy.

Visualizadores personalizados podem ter considerações de segurança.Consulte Considerações sobre segurança do Visualizador.

Os procedimentos abaixo, fornecem um modo de exibição de alto nível que você precisa fazer para criar um visualizador.Para obter uma explicação mais detalhada, consulte Demonstra Passo a passo: Escrever um visualizador em translation from VPE for Csharp.

Para criar o lado do depurador

  1. Use IVisualizerObjectProvider métodos para obter o objeto visualizado no lado do depurador.

  2. Criar uma classe que herda de DialogDebuggerVisualizer.

  3. Substituir o DialogDebuggerVisualizer.Show método para exibir a interface. Use IDialogVisualizerService métodos para exibir formulários, caixas de diálogo e controles do Windows sistema autônomo parte da sua interface.

  4. Aplicar DebuggerVisualizerAttribute, dando-o um visualizador (DialogDebuggerVisualizer).

Para criar o debuggee side

  1. Aplicar DebuggerVisualizerAttribute, dando-o um visualizador (DialogDebuggerVisualizer) e um (fonte do objetoVisualizerObjectSource). Se você omitir a object source, uma fonte de objeto padrão será usada

  2. Se você desejar que seu visualizador para poder edição objetos de dados, bem sistema autônomo exibi-los, você precisará substituir o TransferData ou CreateReplacementObject métodos de VisualizerObjectSource.

Consulte também

Tarefas

Como: Instalar um visualizador

Como: Testar e depurar um visualizador

Conceitos

Considerações sobre segurança do Visualizador

Outros recursos

Visualizadores