Como: Usar 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 object provedor também pode enviar dados de volta para o objeto de fonte.Isso permite que você gravar um visualizador que edita, bem sistema autônomo exibe sistema autônomo 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 comunicam-se 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.
Para obter uma descrição da arquitetura do visualizador, consulte Arquitetura de visualizador.
Os procedimentos a seguir fornecem uma visão de alto nível do que é preciso 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
Use IVisualizerObjectProvider métodos para obter o objeto visualizado no lado do depurador.
Criar uma classe que herda de DialogDebuggerVisualizer.
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.
Aplicar DebuggerVisualizerAttribute, dando-o um visualizador (DialogDebuggerVisualizer).
Para criar o debuggee side
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
Se você desejar que seu visualizador para poder edição objetos de dados, além disso, para exibir, 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