Como: Gravar um visualizador
This topic applies to:
Edition |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
Managed only |
||||
Pro, Premium e Ultimate |
Managed only |
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
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 Windows forms, caixas de diálogo e controles como parte da interface.
Aplicar DebuggerVisualizerAttribute, dando a ele um visualizador (DialogDebuggerVisualizer).
Para criar o debuggee side
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.
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