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 :
|
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é. |
|
DeleteEtlsAfterAnalysis |
Définit une valeur qui détermine si les fichiers ETL sont supprimés une fois l'analyse terminée. |
|
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 :
Peut contenir les éléments suivants :
|
Niveau |
Définit le niveau d'importance d'un MarkerProvider. |
|
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. |
|
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 |
Définit une valeur qui détermine si les événements CLR sont recueillis. |
|
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 :
|
CollectSampleEvents |
Définit une valeur qui détermine si les exemples d'événements sont recueillis. |
|
CollectGpuEvents |
Définit une valeur qui détermine si les événements générés par DX sont recueillis. |
|
CollectFileIO |
Définit une valeur qui détermine si les événements d'E/S de fichier sont recueillis. |
|
UserBufferSettings |
Spécifie la liste de paramètres de mémoire tampon utilisateur. |
Doit contenir les éléments suivants :
|
KernelBufferSettings |
Spécifie la liste de paramètres de mémoire tampon du noyau. |
Doit contenir les éléments suivants :
|
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>