Compartilhar via


Como: Gravar um visualizador

This topic applies to:

Edition

Visual Basic

C#

F#

C++

Web Developer

Express

O tópico é aplicável O tópico é aplicável O tópico é aplicável

Managed only

O tópico é aplicável

Pro, Premium e Ultimate

O tópico é aplicável O tópico é aplicável O tópico é aplicável

Managed only

O tópico é aplicável

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

The architecture of a debugger visualizer has two parts:

  • The debugger side runs within the Visual Studio debugger. The debugger-side code creates and displays the user interface for your visualizer.

  • The debuggee side runs within the process Visual Studio is debugging (the debuggee).

The data object that you want to visualize (a String object, for example) exists in the debuggee-process. So, the debuggee side has to send that data object to the debugger side, which can then display it using a user interface you create.

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

O debuggee side e debugger side se comunicam entre si através 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 é especificado usando o atributo DebuggerVisualizer (DebuggerVisualizerAttribute).

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

Você pode usar IDialogVisualizerService para exibir Windows forms, caixas de diálogo e controles do visualizador.

Support for generic types is limited. You can write a visualizer for a target that is a generic type only if the generic type is an open type. Essa restrição é igual a restrição ao usar o DebuggerTypeProxy atributo. For details, see Usando um atributo DebuggerTypeProxy.

Custom visualizers may have security considerations. See Considerações de segurança do Visualizador.

The procedures below, give a high-level view of what you need to do to create a visualizer. Para obter uma explicação mais detalhada, consulte Demonstra Passo a passo: Writing a Visualizer em C#.

To create the debugger side

  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 Windows forms, caixas de diálogo e controles como parte da interface.

  4. Aplicar DebuggerVisualizerAttribute, dando a ele um visualizador (DialogDebuggerVisualizer).

Para criar o debuggee side

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

  2. Se desejar que o seu visualizador para poder editar objetos de dados, bem como 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 de segurança do Visualizador

Outros recursos

Visualizadores