Partager via


Utilitaire de ligne de commande du visualiseur concurrentiel (CVCollectionCmd)

Vous pouvez utiliser l'utilitaire en ligne de commande Visualiseur concurrentiel (CVCollectionCmd.exe) pour recueillir des traces à partir de la ligne de commande et les afficher dans le Visualiseur concurrentiel pour Visual Studio 2013.Vous pouvez utiliser ces outils sur des ordinateurs sur lesquels Visual Studio n'est pas installé.

[!REMARQUE]

Pour Visual Studio 2013, le Visualiseur concurrentiel est une extension facultative.(Dans certaines éditions des versions précédentes de Visual Studio, le Visualiseur concurrentiel était inclus.) Vous pouvez télécharger le Visualiseur concurrentiel à partir du site web Visual Studio.

Télécharger l'utilitaire en ligne de commande Visualiseur concurrentiel

Pour télécharger et installer l'utilitaire en ligne de commande, accédez à la page Outils de collecte du visualiseur concurrentiel pour Visual Studio 2013 sur le site web du Centre de téléchargement Microsoft et suivez les instructions.Par défaut, CVCollectionCmd.exe est installé dans %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ sur les ordinateurs x64).

Recueillir une trace avec CVCollectionCmd

Vous pouvez recueillir une trace en démarrant l'application avec CVCollectionCmd ou en vous y attachant.Pour plus d'informations sur les options, voir la référence des commandes ci-dessous.Exemple :

<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data

Commandes et paramètres

Pour obtenir de l'aide sur les commandes et paramètres dans l'utilitaire en ligne de commande, tapez ce qui suit à l'invite de commandes :

CvCollectionCmd /?

Option

Description

Paramètres

Valeurs de retour

Query

Renvoie une valeur qui indique si la collecte peut démarrer.

Aucun

0 si la collecte peut démarrer.

1 si la collecte est déjà en cours.

2 si la collecte n'est pas en cours mais que l'une ou plusieurs des sessions ETW nécessaires sont déjà activées.

Launch

Exécute le processus spécifié sous le Visualiseur concurrentiel.

Chemin d'accès à l'exécutable.

0 si l'exécution a réussi.

1 si l'exécution a échoué car l'application cible n'a pas pu être démarrée.

13 si l'exécution a échoué car CVCollectionCmd dispose d'autorisations insuffisantes pour écrire dans le répertoire de sortie spécifié.

Attach

Commence la collecte d'une trace à l'échelle du système ; sinon, établit une liaison à un processus si vous en avez spécifié un.

Aucun

0 si l'attachement a réussi.

1 si l'attachement a échoué car le processus spécifié est non valide ou ambigu.

13 si l'attachement a échoué car CVCollectionCmd dispose d'autorisations insuffisantes pour écrire dans le répertoire de sortie spécifié.

Detach

Arrête la collecte.

Aucun

0 si le détachement a réussi.

1 si le détachement a échoué car la collecte n'est pas en cours.

2 si le détachement a échoué car la collecte n'a pas pu être arrêtée.

Analyser

Analyse la trace spécifiée.

Chemin d'accès complet au fichier CVTrace.

0 si l'analyse a réussi.

1 si l'analyse n'a pas pu démarrer car la trace spécifiée était à l'échelle du système mais aucun processus cible n'a été spécifié.

2 si l'analyse n'a pas pu démarrer car la trace n'était pas à l'échelle du système et un processus a été spécifié.

3 si l'analyse a échoué car le processus spécifié est non valide.

4 si l'analyse a échoué car le fichier CVTrace spécifié est non valide.

LaunchArgs

Spécifie les arguments exécutables cibles.Cette option s'applique uniquement à la commande Launch.

Arguments en ligne de commande de l'application.

Aucun

Outdir

Spécifie le répertoire dans lequel enregistrer les fichiers de trace.S'applique aux commandes Launch et Attach.

Chemin d'accès à un répertoire ou chemin d'accès relatif.

Aucun

Processus

Spécifie le processus auquel s'attacher en cas d'exécution de la commande Attach ou le processus d'une trace à analyser en cas d'exécution de la commande Analyze.S'applique aux commandes Attach et Analyze.

PID ou nom du processus.

Aucun

Config

Spécifie le chemin d'accès au fichier de configuration, si vous souhaitez appliquer des paramètres de collecte autres que les paramètres par défaut.S'applique aux commandes Launch, Attach et Analyze.

Chemin d'accès de répertoire ou chemin d'accès relatif au fichier de configuration XML.

Aucun

Personnalisation des paramètres de configuration

Si vous utilisez CVCollectionCmd pour recueillir des traces et que vous voulez personnaliser les paramètres de collecte, utilisez un fichier de configuration pour les spécifier.

[!REMARQUE]

Quand vous utilisez Visual Studio pour recueillir des traces, ne modifiez pas directement le fichier de configuration.Au lieu de cela, utilisez la boîte de dialogue Paramètres avancés pour modifier les paramètres.

Pour modifier des paramètres de collecte, créez un fichier de configuration sur l'ordinateur où vous exécuterez l'utilitaire CVCollectionCmd.Vous pouvez créer ce fichier de configuration à partir de rien ou copier le fichier de configuration qui se trouve sur l'ordinateur où Visual Studio est installé et le modifier.Le fichier se nomme UserConfig.xml et il se trouve dans le dossier Local AppData.Quand vous exécutez l'utilitaire, utilisez l'option Config avec la commande Launch, Attach ou Analyze.Dans le paramètre qui est associé à l'option Config, spécifiez le chemin d'accès au fichier de configuration.

Balises de fichier de configuration

Le fichier de configuration est basé sur la norme XML.Voici les balises et valeurs valides :

Balise

Description

Valeurs

Config

Délimite le fichier de configuration.

Doit contenir les éléments suivants :

  • MinorVersion

  • MajorVersion

MajorVersion

Spécifie la version majeure du fichier de configuration.

Doit avoir la valeur 1 pour les projets Visual Studio 2012.Si la valeur est autre que 1, l'utilitaire ne fonctionnera pas.

MinorVersion

Spécifie la version mineure du fichier de configuration.

Doit avoir la valeur 0 pour les projets Visual Studio 2012.Si la valeur est autre que 0, l'utilitaire ne fonctionnera pas.

IncludeEnvSymbolPath

Définit une valeur qui détermine si le chemin d'accès de symbole d'environnement (_NT_SYMBOL_PATH) est utilisé.

  • True

  • False

DeleteEtlsAfterAnalysis

Définit une valeur qui détermine si les fichiers ETL sont supprimés une fois l'analyse terminée.

  • True

  • False

SymbolPath

Spécifie le chemin d'accès au serveur de symboles.Pour plus d'informations, voir Utiliser le serveur de symboles Microsoft pour obtenir des fichiers de symboles de débogage.

Nom de répertoire ou URL.

Markers

Contient la liste de fournisseurs de marqueurs.

Peut contenir zéro, un ou plusieurs éléments MarkerProvider.

MarkerProvider

Spécifie un fournisseur de marqueurs.

Doit contenir les éléments suivants :

  • Niveau

  • GUID

  • Nom

Peut contenir les éléments suivants :

  • Catégories

  • IsEnabled

Niveau

Définit le niveau d'importance d'un MarkerProvider.

  • Low

  • Normal

  • High

  • Critical

  • Everything

Guid

Identificateur global unique du fournisseur de marqueurs ETW.

Un GUID.

Nom

Spécifie la description du fournisseur de marqueurs.

Une chaîne.

Catégories

Spécifie les catégories recueillies pour le fournisseur de marqueurs.

Chaîne de nombres ou de plages de nombres délimitée par des virgules.

IsEnabled

Définit une valeur qui détermine si le fournisseur de marqueurs est activé pour la collecte.

  • True

  • False

FilterConfig

Spécifie la liste d'options de configuration des événements ETW filtrés à partir de la collecte.

Peut contenir les éléments suivants :

  • CollectClrEvents

  • ClrCollectionOptions

  • CollectSampleEvents

  • CollectGpuEvents

  • CollectFileIO

CollectClrEvents

Définit une valeur qui détermine si les événements CLR sont recueillis.

  • True

  • False

ClrCollectionOptions

Spécifie s'il faut recueillir les événements CLR pour les applications natives et s'il faut recueillir les événements d'arrêt NGEN.

Peut contenir une, les deux ou aucune de ces valeurs :

  • CollectForNative

  • DisableNGenRundown

CollectSampleEvents

Définit une valeur qui détermine si les exemples d'événements sont recueillis.

  • True

  • False

CollectGpuEvents

Définit une valeur qui détermine si les événements générés par DX sont recueillis.

  • True

  • False

CollectFileIO

Définit une valeur qui détermine si les événements d'E/S de fichier sont recueillis.

  • True

  • False

UserBufferSettings

Spécifie la liste de paramètres de mémoire tampon utilisateur.

Doit contenir les éléments suivants :

  • BufferFlushTimer

  • BufferSize

  • MinimumBuffers

  • MaximumBuffers

KernelBufferSettings

Spécifie la liste de paramètres de mémoire tampon du noyau.

Doit contenir les éléments suivants :

  • BufferFlushTimer

  • BufferSize

  • MinimumBuffers

  • MaximumBuffers

BufferFlushTimer

Spécifie l'horloge de vidage des mémoires tampons ETW.

Entier positif.

BufferSize

Quantité de mémoire allouée à chaque mémoire tampon de session de suivi des événements, en kilo-octets.

Nombre compris entre 0 et 1024.

MinimumBuffers

Quantité minimale de mémoires tampons allouées pour le pool de mémoires tampons de la session de suivi des événements.

Entier positif supérieur ou égal à deux fois le nombre de cœurs logiques.

MaximumBuffers

Quantité maximale de mémoires tampons allouées pour le pool de mémoires tampons de la session de suivi des événements.

Nombre supérieur ou égal à MinimumBuffers.

JustMyCode

Spécifie la liste de répertoires Just My Code.

Liste de zéro, un ou plusieurs éléments MyCodeDirectory.

MyCodeDirectory

Spécifie un répertoire qui contient votre code.

Chemin d'accès absolu.

Exemple

Au lieu de créer un fichier de configuration à partir de rien, vous pouvez copier l'exemple suivant et le modifier en fonction de vos besoins.

<?xml version="1.0"?>
<LocalConfig xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" MajorVersion="1" MinorVersion="0">
  


  <IncludeEnvSymbolPath>true</IncludeEnvSymbolPath>
  
  <DeleteEtlsAfterAnalysis>true</DeleteEtlsAfterAnalysis>
  
  <TraceLocation>C:\traces</TraceLocation>

  <SymbolPath>http://symweb</SymbolPath>
  
  <Markers>
    <MarkerProvider Name="Default" Guid="8d4925ab-505a-483b-a7e0-6f824a07a6f0" Level="Low" />
    <MarkerProvider Name="TPL" Guid="2e5dba47-a3d2-4d16-8ee0-6671ffdcd7b5" Level="Normal" />
    <MarkerProvider Name="TPL Dataflow" Guid="16f53577-e41d-43d4-b47e-c17025bf4025" Level="Normal" />
    <MarkerProvider Name="TPL Synchronization" Guid="ec631d38-466b-4290-9306-834971ba0217" Level="Normal" />
    <MarkerProvider Name="PLINQ" Guid="159eeeec-4a14-4418-a8fe-faabcd987887" Level="Normal" />
    <MarkerProvider Name="Concurrency Runtime" Guid="f7b697a3-4db5-4d3b-be71-c4d284e6592f" Level="Normal" />
    <MarkerProvider Name="Scenario Markers" Guid="fb9244c9-f23a-4966-8a9c-97a51f8c355b" Level="Low" />
    
    <!-- The IsEnabled and Categories elements are optional -->
    <MarkerProvider Name="myMarker1" Guid="d0dbb3a3-895c-4ce6-96d9-28f69d664dc3" Level="Critical" IsEnabled="false" Categories="0,1,3-5,8" />
    <MarkerProvider Name="myMarker2" Guid="03452127-a617-4302-9e30-c0d10442e4ee" Level="Low" IsEnabled="false" Categories="0,1,3-5,8-10,11-13" />
  </Markers>
  
  
  <FilterConfig>
    <CollectClrEvents>true</CollectClrEvents>
    <ClrCollectionOptions>CollectForNative DisableNGenRundown</ClrCollectionOptions>
    <CollectSampleEvents>true</CollectSampleEvents>
    <CollectGpuEvents>true</CollectGpuEvents>
    <CollectFileIO>true</CollectFileIO>
  </FilterConfig>
  
  <UserBufferSettings>
    <BufferFlushTimer>0</BufferFlushTimer>
    <BufferSize>256</BufferSize>
    <MinimumBuffers>512</MinimumBuffers>
    <MaximumBuffers>1024</MaximumBuffers>
  </UserBufferSettings>
  
  <KernelBufferSettings>
    <BufferFlushTimer>0</BufferFlushTimer>
    <BufferSize>256</BufferSize>
    <MinimumBuffers>512</MinimumBuffers>
    <MaximumBuffers>1024</MaximumBuffers>
  </KernelBufferSettings>
  
  <!-- List of MyCodeDirectory directories -->
  <JustMyCode>
    <MyCodeDirectory>C:\myBinaries1</MyCodeDirectory>
    <MyCodeDirectory>C:\myBinaries2</MyCodeDirectory>
  </JustMyCode>
</LocalConfig>