Créer des visualiseurs personnalisés de donnéesCreate Custom Visualizers of Data

Les visualiseurs sont des composants de la Visual StudioVisual Studio interface utilisateur du débogueur.Visualizers are components of the Visual StudioVisual Studio debugger user interface. A visualiseur crée une boîte de dialogue ou une autre interface pour afficher une variable ou un objet d’une manière qui convient à son type de données.A visualizer creates a dialog box or another interface to display a variable or object in a manner that is appropriate to its data type. Par exemple, un visualiseur HTML interprète une chaîne HTML et affiche le résultat tel qu'il apparaîtrait dans une fenêtre du navigateur ; un visualiseur bitmap interprète une structure bitmap et affiche le graphique représenté.For example, an HTML visualizer interprets an HTML string and displays the result as it would appear in a browser window; a bitmap visualizer interprets a bitmap structure and displays the graphic it represents. Certains visualiseurs vous permettent de modifier et de consulter les données.Some visualizers enable you to modify as well as view the data.

Le débogueur Visual StudioVisual Studio comprend six visualiseurs standard.The Visual StudioVisual Studio debugger includes six standard visualizers. Il s’agit de texte, les visualiseurs HTML, XML et JSON, qui fonctionnent sur les objets de chaîne ; le visualiseur de l’arborescence WPF, pour afficher les propriétés d’une arborescence d’objets visual WPF ; et du visualiseur dataset, utilisé pour les objets DataSet, DataView et DataTable.These are the text, HTML, XML, and JSON visualizers, all of which work on string objects; the WPF Tree visualizer, for displaying the properties of a WPF object visual tree; and the dataset visualizer, which works for DataSet, DataView, and DataTable objects. Des visualiseurs supplémentaires sont disponibles auprès de tiers et de la communauté. Vous pourrez en télécharger plus tard chez Microsoft Corporation.Additional visualizers may be available for download from Microsoft Corporation in the future, and are available from third-parties and the community. De plus, vous pouvez écrire vos propres visualiseurs et les installer dans le débogueur Visual StudioVisual Studio.In addition, you can write your own visualizers and install them in the Visual StudioVisual Studio debugger.

Note

Pour créer un visualiseur personnalisé pour le code natif, consultez le visualiseur du débogueur natif SQLite exemple.To create a custom visualizer for native code, see the SQLite native Debugger Visualizer sample. Dans les applications UWP et Windows 8.x, les visualiseurs personnalisés ne sont pas pris en charge.In UWP and Windows 8.x apps, custom visualizers are not supported.

Dans le débogueur, les visualiseurs sont représentés par une icône de loupe VisualizerIcon.In the debugger, visualizers are represented by a magnifying glass icon VisualizerIcon. Lorsque vous voyez l’icône de loupe dans un DataTip, dans une fenêtre du débogueur, comme la espion fenêtre, ou dans le Espion express boîte de dialogue, vous pouvez cliquer sur la loupe pour sélectionner un visualiseur approprié au type de données de l’objet correspondant.When you see the magnifying glass icon in a DataTip, in a debugger window like the Watch window, or in the QuickWatch dialog box, you can click the magnifying glass to select a visualizer appropriate to the data type of the corresponding object.

Vue d’ensemble des visualiseurs personnalisésOverview of custom visualizers

Vous pouvez écrire un visualiseur personnalisé pour un objet de toute classe managée à l'exception de Object ou Array.You can write a custom visualizer for an object of any managed class except for Object or Array.

L'architecture d'un visualiseur du débogueur comporte deux parties :The architecture of a debugger visualizer has two parts:

  • Le côté débogueur s’exécute dans le débogueur Visual Studio.The debugger side runs within the Visual Studio debugger. Le code côté débogueur crée et affiche l'interface utilisateur de votre visualiseur.The debugger-side code creates and displays the user interface for your visualizer.

  • Le côté programme débogué s’exécute dans le processus que Visual Studio débogue (le programme débogué).The debuggee side runs within the process Visual Studio is debugging (the debuggee).

    L’objet de données que vous souhaitez visualiser (un objet String, par exemple) existe dans le processus de l’élément débogué.The data object that you want to visualize (a String object, for example) exists in the debuggee-process. Le côté élément débogué doit donc envoyer cet objet de données au côté débogueur qui peut alors l’afficher à l’aide d’une interface utilisateur que vous créez.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.

    Le côté débogueur reçoit cet objet de données à visualiser à partir d’un fournisseur d’objets qui implémente le IVisualizerObjectProvider interface.The debugger side receives this data object to be visualized from an object provider that implements the IVisualizerObjectProvider interface. Le côté programme débogué envoie l’objet de données via le source de l’objet, qui est dérivée de VisualizerObjectSource.The debuggee side sends the data object through the object source, which is derived from VisualizerObjectSource. Le fournisseur d'objets peut également renvoyer des données à la source d'objet, vous permettant d'écrire un visualiseur capable de modifier et d'afficher des données.The object provider can also send data back to the object source, which enables you to write a visualizer that edits, as well as displays, data. Le fournisseur d'objets peut être substitué pour parler à l'évaluateur d'expression et, par conséquent, à la source de l'objet.The object provider can be overridden to talk to the expression evaluator and, therefore, to the object source

    Le côté programme débogué et le côté débogueur communiquent entre eux via Stream.The debuggee side and debugger side communicate with one another through Stream. Des méthodes sont fournies pour sérialiser un objet de données dans un Stream et désérialiser le Stream dans un objet de données.Methods are provided to serialize a data object into a Stream and deserialize the Stream back into a data object.

    Le code côté programme débogué est spécifié à l'aide de l'attribut DebuggerVisualizer (DebuggerVisualizerAttribute).The debuggee side code is specified using the DebuggerVisualizer attribute (DebuggerVisualizerAttribute).

    Pour créer l'interface utilisateur du visualiseur côté débogueur, vous devez créer une classe qui hérite de DialogDebuggerVisualizer et substituer la méthode Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer.Show pour afficher l'interface.To create the visualizer user interface on the debugger side, you must create a class that inherits from DialogDebuggerVisualizer and override the Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer.Show method to display the interface.

    Vous pouvez utiliser IDialogVisualizerService pour afficher des formulaires, des boîtes de dialogue et des contrôles Windows à partir de votre visualiseur.You can use IDialogVisualizerService to display Windows forms, dialogs, and controls from your visualizer.

    La prise en charge des types génériques est limitée.Support for generic types is limited. Vous pouvez écrire un visualiseur pour une cible qui est un type générique uniquement si le type générique est un type ouvert.You can write a visualizer for a target that is a generic type only if the generic type is an open type. Cette restriction est identique à la restriction qui s'applique lorsque vous utilisez l'attribut DebuggerTypeProxy.This restriction is the same as the restriction when using the DebuggerTypeProxy attribute. Pour plus d’informations, consultez DebuggerTypeProxy (attribut) à l’aide de.For details, see Using DebuggerTypeProxy Attribute.

    Les visualiseurs personnalisés peuvent avoir des exigences en matière de sécurité.Custom visualizers may have security considerations. Consultez considérations de sécurité visualiseur.See Visualizer Security Considerations.

    Les procédures ci-après fournissent une vue d'ensemble de la marche à suivre pour créer un visualiseur.The procedures below, give a high-level view of what you need to do to create a visualizer. Pour une explication plus détaillée, consultez procédure pas à pas : écriture d’un visualiseur en c#.For a more detailed explanation, see Walkthrough: Writing a Visualizer in C#.

Pour créer le côté débogueurTo create the debugger side

  1. Utilisez les méthodes IVisualizerObjectProvider pour obtenir l'objet visualisé côté débogueur.Use IVisualizerObjectProvider methods to get the visualized object on the debugger side.

  2. Créez une classe qui hérite de DialogDebuggerVisualizer.Create a class that inherits from DialogDebuggerVisualizer.

  3. Substituez la méthode Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer.Show pour afficher votre interface.Override the Microsoft.VisualStudio.DebuggerVisualizers.DialogDebuggerVisualizer.Show method to display your interface. Les méthodes IDialogVisualizerService vous permettent d'afficher des formulaires, des boîtes de dialogue et des contrôles Windows dans le cadre de votre interface.Use IDialogVisualizerService methods to display Windows forms, dialogs, and controls as part of your interface.

  4. Appliquez DebuggerVisualizerAttribute, en lui affectant un visualiseur (DialogDebuggerVisualizer).Apply DebuggerVisualizerAttribute, giving it a visualizer (DialogDebuggerVisualizer).

Pour créer le côté déboguéTo create the debuggee side

  1. Appliquez DebuggerVisualizerAttribute, en lui affectant un visualiseur (DialogDebuggerVisualizer) et une source d'objet (VisualizerObjectSource).Apply DebuggerVisualizerAttribute, giving it a visualizer (DialogDebuggerVisualizer) and an object source (VisualizerObjectSource). Si vous omettez la source de l'objet, une source d'objet par défaut sera utilisée.If you omit the object source, a default object source will be used

  2. Si vous souhaitez que votre visualiseur modifie et affiche des objets de données, substituez les méthodes TransferData ou CreateReplacementObject de VisualizerObjectSource.If you want your visualizer to be able to edit data objects, as well as display them, you will need to override the TransferData or CreateReplacementObject methods from VisualizerObjectSource.

Dans cette sectionIn This Section

Procédure pas à pas : écriture d’un visualiseur en C#Walkthrough: Writing a Visualizer in C#

Procédure pas à pas : écriture d’un visualiseur en Visual BasicWalkthrough: Writing a Visualizer in Visual Basic

Guide pratique pour installer un visualiseurHow to: Install a Visualizer

Guide pratique pour tester et déboguer un visualiseurHow to: Test and Debug a Visualizer

Informations de référence sur l’API du visualiseurVisualizer API Reference

Afficher les données dans le débogueurView Data in the Debugger