Compartilhar via


Como: gravar um visualizador

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

A arquitetura de um visualizador de depurador tem duas partes:

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

  • O debuggee side é executado dentro do processo de depuração de Visual Studio (o debuggee).

O objeto de dados que você deseja visualizar (um objeto de cadeia de caracteres, por exemplo) existe no processo de depuração.Assim, o debuggee side tem que enviar esse objeto de dados para o lado do depurador, que pode exibí-lo usando uma interface de usuário que você criar.

O debuggee side recebe esse objeto de dados para ser visualizado de um provedor de 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 gravar 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, para o objeto de fonte

O debuggee side e debugger side se comunicam 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 é 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 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 é um tipo aberto.Essa restrição é igual a restrição ao uso de DebuggerTypeProxy atributo.Para obter detalhes, consulte:Usando o atributo DebuggerTypeProxy.

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

Os procedimentos abaixo, dar uma visão geral do que é preciso criar um visualisador.Para obter uma explicação mais detalhada, consulte Passo a passo: Writing a Visualizer em C#.

Para criar o debuggee 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 sua 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 um objeto de fonte (VisualizerObjectSource).Se você omitir a object source, um objeto de fonte padrão será usado.

  2. Se você deseja que seu 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