Partager via


Kit de développement logiciel (SDK) du visualiseur concurrentiel

Vous pouvez instrumenter votre code source à l’aide du kit SDK du visualiseur concurrentiel pour afficher des informations supplémentaires dans le visualiseur concurrentiel. Vous pouvez associer les données supplémentaires à des phases et à des événements de votre code. Ces visualisations supplémentaires sont appelées marqueurs. Pour obtenir une introduction pas à pas, consultez Introducing the Concurrency Visualizer SDK.

Propriétés

Les indicateurs, les intervalles et les messages ont deux propriétés : la catégorie et l’importance. Dans la boîte de dialogue Paramètres avancés, vous pouvez utiliser ces propriétés pour filtrer l’affichage des marqueurs. Ces propriétés ont également un impact sur la représentation visuelle des marqueurs. Par exemple, la taille des indicateurs est utilisée pour représenter l’importance. La couleur, quant à elle, est utilisée pour indiquer la catégorie.

Utilisation de base

Le visualiseur concurrentiel expose un fournisseur par défaut que vous pouvez utiliser pour générer des marqueurs. Le fournisseur est déjà inscrit avec le visualiseur concurrentiel. Aucune autre étape n’est donc nécessaire pour afficher les marqueurs dans l’interface utilisateur.

C# et Visual Basic

En C#, en Visual Basic et dans tout autre code managé, utilisez le fournisseur par défaut en appelant des méthodes dans la classe Markers. Il expose quatre méthodes pour générer des marqueurs : WriteFlag, EnterSpan, WriteMessage et WriteAlert. Il existe plusieurs surcharges pour ces fonctions, selon que vous souhaitez utiliser les valeurs par défaut des propriétés. La surcharge la plus simple accepte un seul paramètre de chaîne qui spécifie la description de l’événement. La description s’affiche dans les rapports du visualiseur concurrentiel.

Pour ajouter la prise en charge du kit SDK à un projet C# ou Visual Basic
  1. Dans la barre de menus, choisissez Analyser, Visualiseur concurrentiel, Ajouter le SDK au projet.

  2. Sélectionnez le projet dans lequel vous souhaitez accéder au kit SDK, puis cliquez sur le bouton Ajouter le SDK au projet sélectionné.

  3. Ajoutez une instruction imports ou using à votre code.

    using Microsoft.ConcurrencyVisualizer.Instrumentation;
    

C++

En C++, créez un objet de classe marker_series et utilisez-le pour appeler des fonctions. La classe marker_series expose trois fonctions pour générer des marqueurs : la méthode marker_series::write_flag, la méthode marker_series::write_message et la méthode marker_series::write_alert.

Pour ajouter la prise en charge du kit SDK à un projet C++ ou C
  1. Dans la barre de menus, choisissez Analyser, Visualiseur concurrentiel, Ajouter le SDK au projet.

  2. Sélectionnez le projet dans lequel vous souhaitez accéder au kit SDK, puis cliquez sur le bouton Ajouter le SDK au projet sélectionné.

  3. En C++, ajoutez cvmarkersobj.h. En C, ajoutez cvmarkers.h.

  4. Ajoutez une instruction using à votre code.

    using namespace Concurrency::diagnostic;
    
  5. Créez un objet marker_series et passez-le au constructeur span.

    
    marker_series mySeries;
    span s(mySeries, _T("Span description"));
    
    

Utilisation personnalisée

Pour les scénarios avancés, le kit SDK du visualiseur concurrentiel peut permettre un plus grand contrôle. Deux grands concepts sont associés aux scénarios plus avancés : les fournisseurs de marqueurs et les séries de marqueurs. Les fournisseurs de marqueurs sont différents des fournisseurs ETW (car ils ont chacun leur propre GUID). Les séries de marqueurs sont des canaux d’événements en série qui sont générés par un fournisseur. Vous pouvez les utiliser pour organiser les événements générés par un fournisseur de marqueurs.

Pour utiliser un nouveau fournisseur de marqueurs dans un projet C# ou Visual Basic

  1. Créez un objet MarkerWriter. Le constructeur accepte un GUID.

  2. Pour inscrire le fournisseur, ouvrez la boîte de dialogue Paramètres avancés du visualiseur concurrentiel. Sélectionnez l’onglet Marqueurs, puis cliquez sur le bouton Ajouter un nouveau fournisseur. Dans la boîte de dialogue Paramètres avancés, entrez le GUID qui a été utilisé pour créer le fournisseur, ainsi que la description du fournisseur.

Pour utiliser un nouveau fournisseur de marqueurs dans un projet C++ ou C

  1. Utilisez la fonction CvInitProvider pour initialiser un PCV_PROVIDER. Le constructeur accepte un GUID* et un PCV_PROVIDER*.

  2. Pour inscrire le fournisseur, ouvrez la boîte de dialogue Paramètres avancés. Sélectionnez l’onglet Marqueurs, puis cliquez sur le bouton Ajouter un nouveau fournisseur. Dans la boîte de dialogue, entrez le GUID qui a été utilisé pour créer le fournisseur, ainsi que la description du fournisseur.

Pour utiliser une série de marqueurs dans un projet C# ou Visual Basic

  1. Pour utiliser un nouveau MarkerSeries, commencez par en créer un à l’aide d’un objet MarkerWriter, puis générez les événements de marqueur directement à partir de la nouvelle série.

    MarkerSeries series1 = myMarkerWriter.CreateMarkerSeries("Series 1");
    series1.WriteFlag("My flag");
    

Pour utiliser une série de marqueurs dans un projet en C++

  1. Créez un objet marker_series. Vous pouvez générer des événements à partir de cette nouvelle série.

    marker_series series;
    series.write_flag(_T("Hello world!"));
    

Pour utiliser une série de marqueurs dans un projet en C

  1. Utilisez la fonction CvCreateMarkerSeries pour créer une série PCV_MARKERSERIES.

    PCV_MARKERSERIES series;
    CvCreatemarkerSeries(myProvider, _T("My Series"), &series);
    CvWriteFlag(series, _T("Writing a flag"));
    

Voir aussi

Intitulé Description
Informations de référence sur la bibliothèque C++ Décrit l’API du visualiseur concurrentiel pour le langage C++.
Informations de référence sur la bibliothèque C Décrit l’API du visualiseur concurrentiel pour le langage C.
Instrumentation Décrit l’API du visualiseur concurrentiel pour le code managé.
Visualiseur concurrentiel Informations de référence sur les vues et rapports des fichiers de données de profilage générés à l’aide de la méthode de concurrence et qui incluent des données d’exécution des threads.