Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Arkitekturen för en felsökningsvisualiserare har två delar:
Felsökningssidan körs i Visual Studio-felsökningsprogrammet. Koden på felsökningssidan skapar och visar användargränssnittet för visualiseraren.
Felsökningssidan körs i processen Visual Studio felsöker (debuggee).
En visualiserare är en felsökningskomponent som gör att felsökaren kan visa (visualisera) innehållet i ett dataobjekt i ett meningsfullt och begripligt format. Vissa visualiserare stöder även redigering av dataobjektet. Genom att skriva anpassade visualiseringar kan du utöka felsökningsprogrammet för att hantera dina egna anpassade datatyper.
Dataobjektet som ska visualiseras finns i den process som du felsöker ( felsökningsprocessen ). Användargränssnittet som visar data skapas i Visual Studio-felsökningsprocessen:
| Felsökningsprocess | Felsökningsprocess | 
|---|---|
| Användargränssnitt för felsökningsprogram (Datatips, visningsfönster, QuickWatch) | Dataobjekt som ska visualiseras | 
För att visualisera dataobjektet i felsökningsgränssnittet behöver du kod för att kommunicera mellan de två processerna. Visualiserararkitekturen består därför av två delar: kod på felsökarens sida och kod på felsökningssidan .
Koden på felsökningssidan skapar ett eget användargränssnitt, som kan anropas från felsökningsgränssnittet, till exempel en DataTip, bevakningsfönstret eller QuickWatch. Visualiserargränssnittet skapas genom att använda klassen DialogDebuggerVisualizer och gränssnittet IDialogVisualizerService. Precis som alla Visualizer-API:er finns DialogDebuggerVisualizer och IDialogVisualizerService i Microsoft.VisualStudio.DebuggerVisualizers namnområdet.
| Felsökningssidan | Debuggee-sidan | 
|---|---|
| Dialogdebugger-visualiserare-klass IDialogVisualizerService-gränssnitt  | 
Dataobjekt | 
Användargränssnittet hämtar data som ska visualiseras från en objektprovider, som finns på felsökningssidan:
| Felsökningssidan | Debuggee-sidan | 
|---|---|
| DialogDebuggerVisualizer-klass IDialogVisualizerService-gränssnitt  | 
Dataobjekt | 
| Objektprovider (implementerar IVisualizerObjectProvider) | 
Det finns ett motsvarande objekt på felsökningssidan som kallas objektkälla:
| Felsökningssidan | Debuggee-sidan | 
|---|---|
| DialogDebuggerVisualizer-klass IDialogVisualizerService-gränssnitt  | 
Dataobjekt | 
| Objektprovider (implementerar IVisualizerObjectProvider) | Objektkälla (härledd från VisualizerObjectSource) | 
Objektprovidern tillhandahåller de objektdata som ska visualiseras till visualiserargränssnittet. Objektprovidern hämtar objektdata från objektkällan. Objektprovidern och objektkällan erbjuder API:er för att kommunicera objektdata mellan felsökningssidan och den felsökta sidan.
Varje visualiserare måste få dataobjektet att visualiseras. I följande tabell visas motsvarande API:er som objektprovidern och objektkällan använder för detta ändamål:
| Objektprovider | Objektkälla | 
|---|---|
| GetData —eller— GetObject  | 
GetData | 
Observera att objektprovidern kan använda antingen GetData eller GetObject. Båda API:erna resulterar i ett anrop till GetData på objektkällan. Ett anrop till Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.GetData fyller i en System.IO.Stream, som representerar en serialiserad form av objektet som visualiseras.
              Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject deserialiserar data tillbaka till objektformuläret, som du sedan kan visa i användargränssnittet som du skapar med DialogDebuggerVisualizer. 
              Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData fyller i rådata som en Stream, som du själv måste deserialisera. 
              Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetObject fungerar genom att anropa Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData för att hämta serialiserade Streamoch sedan deserialisera data. Använd Microsoft.VisualStudio.DebuggerVisualizers.IVisualizerObjectProvider.GetData när objektet inte kan serialiseras av .NET och kräver anpassad serialisering. I så fall måste du också åsidosätta Microsoft.VisualStudio.DebuggerVisualizers.VisualizerObjectSource.Serialize metoden.
Om du skapar en skrivskyddad visualiserare räcker det med enkelriktad kommunikation med GetData eller GetObject . Om du skapar en visualiserare som stöder redigering av dataobjekt måste du göra mer. Du måste också kunna skicka ett dataobjekt från objektprovidern tillbaka till objektkällan. I följande tabell visas de objektprovider- och objektkäll-API:er som används för detta ändamål:
| Objektprovider | Objektkälla | 
|---|---|
| ReplaceData —eller— ReplaceObject  | 
CreateReplacementObject | 
Observera återigen att det finns två API:er som objektprovidern kan använda. Data skickas alltid från objektprovidern till objektkällan som en Stream, men ReplaceData kräver att du serialiserar objektet till en Stream själv.
              ReplaceObject tar ett objekt som du anger, serialiserar det till ett Streamoch anropar ReplaceData sedan för att skicka Stream till CreateReplacementObject.
Med någon av ersätt-metoderna skapas ett nytt dataobjekt i felsökningsrutan som ersätter objektet som visualiseras. Om du vill ändra innehållet i det ursprungliga objektet utan att ersätta det använder du någon av de överföringsmetoder som visas i följande tabell. Dessa API:er överför data i båda riktningarna samtidigt, utan att ersätta objektet som visualiseras:
| Objektprovider | Objektkälla | 
|---|---|
| TransferData —eller— TransferObject  | 
TransferData |