Befehlszeilenprogramm für die Parallelitätsschnellansicht (CVCollectionCmd)
Sie können das Befehlszeilenprogramm für die Parallelitätsschnellansicht (CVCollectionCmd.exe) verwenden, um die Ablaufverfolgung aus der Befehlszeile zu sammeln und diese in der Parallelitätsschnellansicht für Visual Studio anzuzeigen. Die Tools können auf Computern verwendet werden, auf denen Visual Studio nicht installiert ist.
Hinweis
Concurrency Visualizer ist eine optionale Erweiterung. (Zuvor war das Programm Bestandteil von Visual Studio.) Sie können die Concurrency Visualizer Collection Tools für Visual Studio aus dem Download Center herunterladen.
Herunterladen des Befehlszeilenprogramms für die Parallelitätsschnellansicht
Zum Herunterladen und Installieren des Befehlszeilenprogramms rufen Sie Concurrency Visualizer Collection Tools für Visual Studio auf, und folgen Sie den Anweisungen. Standardmäßig wird CVCollectionCmd.exe in %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ auf 64-Bit-Computern) installiert.
Eine Ablaufverfolgung mit CVCollectionCmd sammeln
Sie können eine Ablaufverfolgung sammeln, indem Sie die App mit CVCollectionCmd starten oder es dieser anhängen. Siehe die Befehlszeilenreferenz unten hinsichtlich Ihrer Optionen. Beispiel:
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Befehle und Parameter
Wenn Sie Hilfe zu den Befehlen und Parametern im Befehlszeilenprogramm benötigen, geben Sie Folgendes in der Eingabeaufforderung ein:
CVCollectionCmd
Option | BESCHREIBUNG | Parameter | Rückgabewerte |
---|---|---|---|
Abfrage | Gibt zurück, ob sich die Auflistung starten lässt. | Keine | 0, wenn die Auflistung startbereit ist. 1, wenn die Auflistung bereits läuft. 2, wenn die Auflistung nicht läuft, aber eine oder mehr der erforderlichen ETW-Sitzungen bereit aktiviert ist. |
Starten | Führt den festgelegten Prozess unter Concurrency Visualizer aus. | Der Pfad der ausführbaren Datei. | 0, wenn das Ausführen erfolgreich war. 1, wenn das Ausführen fehlgeschlagen ist, weil die Zielanwendung nicht gestartet werden konnte. 13, wenn das Ausführen fehlgeschlagen ist, weil CVCollectionCmd keine ausreichenden Berechtigungen für das Schreiben in die festgelegte Ausgabeverzeichnis besitzt. |
Anfügen | Beginnt mit dem Erfassen einer systemweiten Ablaufverfolgung; wird ansonsten an einen Prozess angefügt, sofern ein solcher festgelegt wurde. | Keine | 0, wenn Anfügen erfolgreich war. 1, wenn das Anfügen fehlgeschlagen ist, weil der festgelegte Prozess ungültig oder mehrdeutig ist. 13, wenn das Anfügen fehlgeschlagen ist, weil CVCollectionCmd nicht ausreichende Berechtigungen für das Schreiben in das festgelegte Ausgabeverzeichnis besitzt. |
Trennen | Auflistung wird angehalten. | Keine | 0, wenn Trennen erfolgreich war. 1, wenn das Trennen fehlgeschlagen ist, weil die Auflistung aktuell nicht ausgeführt wird. 2, wenn das Trennen fehlgeschlagen ist, weil die Auflistung nicht angehalten werden konnte. |
Analysieren | Analysiert die festgelegte Ablaufverfolgung. | Der vollständige Pfad der Datei DVTrace. | 0, wenn die Analyse erfolgreich war. 1, wenn die Analyse nicht gestartet werden kann, da die festgelegte Ablaufverfolgung systemweit war, aber kein Zielprozess festgelegt worden ist. 2, wenn die Analyse nicht gestartet werden kann, da die Ablaufverfolgung nicht systemweit war und ein Zielprozess festgelegt worden ist. 3, wenn die Analyse fehlgeschlagen ist, weil der festgelegte Prozess ungültig ist. 4, wenn die Analyse fehlgeschlagen ist, weil die festgelegte Datei CVTrace ungültig ist. |
LaunchArgs | Legt die ausführbaren Argumente des Ziels fest. Diese Option gilt nur für den Befehl "Launch". | Die Befehlszeilenargumente für die Anwendung. | Keine |
Outdir | Legt das Verzeichnis fest, in dem die Ablaufverfolgungsdateien gespeichert werden sollen. Gilt für die Befehle "Starten" und "Anfügen". | Ein Verzeichnispfad oder ein relativer Pfad. | Keine |
Prozess | Legt den anfügenden Prozess fest, wenn der Befehl "Anfügen" ausgeführt wird oder den zu analysierenden Prozesses in einer Ablaufverfolgung, wenn der Befehl "Analysieren" ausgeführt wird. Gilt für die Befehle "Anfügen" und "Analysieren". | PID oder Name des Prozesses. | Keine |
Konfigurationen | Legt den Pfad der Konfigurationsdatei fest, wenn Sie andere Auflistungeinstellungen als die standardmäßigen möchten. Gilt für die Befehle "Starten", "Anfügen" und "Analysieren". | Der Verzeichnispfad oder relative Pfad der XML-Konfigurationsdatei. | Keine |
Anpassen von Konfigurationseinstellungen
Wenn Sie CVCollectionCmd für die Auflistung der Ablaufverfolgung verwenden und die Einstellungen anpassen möchten, dann verwenden Sie eine Konfigurationsdatei, um diese festzulegen.
Hinweis
Wenn Sie Visual Studio für die Auflistung der Ablaufverfolgung verwenden, dann verändern Sie die Konfigurationsdatei nicht direkt. Nutzen Sie stattdessen das Dialogfeld Erweiterte Einstellungen dafür.
Erstellen Sie für Änderungen an den Auflistungseinstellung eine Konfigurationsdatei auf dem Rechner, auf dem das Dienstprogramm CVCollectionCmd ausgeführt wird. Sie können die Konfigurationsdatei neu erstellen oder auf den Computer kopieren, auf dem Visual Studio installiert ist und sie anschließend anpassen. Die Datei heißt UserConfig.xml und befindet sich im Ordner Local AppData. Wenn Sie das Dienstprogramm ausführen, verwenden Sie die Option "Config" zusammen mit dem Befehl "Starten", "Anfügen" oder "Analysieren". Geben Sie in dem der Option "Config" zugeordneten Parameter den Pfad zur Konfigurationsdatei an.
Tags der Konfigurationsdatei
Die Konfigurationsdatei ist XML-basiert. Hier sind die gültigen Tags und Werte:
Tag | BESCHREIBUNG | Werte |
---|---|---|
Konfigurationen | Grenzt die gesamte Config-Datei ab. | Muss folgende Elemente enthalten: - MinorVersion - MajorVersion |
MajorVersion | Gibt die Hauptversion der Konfigurationsdatei an. | Muss für die meisten Visual Studio-Projekte 1 sein. Wenn nicht 1, dann funktioniert das Dienstprogramm nicht. |
MinorVersion | Legt die Nebenversion der Konfigurationsdatei fest. | Muss für die meisten Visual Studio-Projekte 0 sein. Wenn nicht 0, dann funktioniert das Dienstprogramm nicht. |
IncludeEnvSymbolPath | Legt einen Wert fest, der bestimmt, ob der Umgebungssymbolpfad (_NT_SYMBOL_PATH) verwendet wird. | - True - False |
DeleteEtlsAfterAnalysis | Gibt einen Wert an, der festlegt, ob die ETL-Dateien nach Abschluss der Analyse gelöscht werden. | - True - False |
SymbolPath | Gibt den Pfad des Symbolservers an. Weitere Informationen finden Sie unter Beziehen von Debugsymboldateien über den Microsoft-Symbolserver. | Ein Verzeichnisname oder eine URL. |
Marker | Enthält die Liste der Markeranbieter. | Kann null oder mehr MarkerProvider-Elemente enthalten. |
MarkerProvider | Gibt einen einzelnen Markeranbieter an. | Muss folgende Elemente enthalten: - Level – GUID - Name Kann folgende Elemente enthalten: - Categories - IsEnabled |
Ebene | Legt den Wert für die Bedeutung eines MarkerProviders fest. | - Low - Normal - High - Kritisch - Everything |
GUID | Der Globally Unique Identifier des ETW-Markeranbieters. | Ein GUID. |
name | Gibt die Beschreibung des Markeranbieters an. | Eine Zeichenfolge. |
Kategorien | Gibt die für den Markeranbieter erfassten Kategorien an. | Eine durch Kommas getrennte Zeichenfolge oder eine Reihe von Zahlen. |
IsEnabled | Gibt einen Wert an der festlegt, ob der Markeranbieter für die Auflistung aktiviert ist. | - True - False |
FilterConfig | Gibt die Liste der Konfigurationsoptionen der ETW-Ereignisse an, die aus der Auflistung gefiltert werden. | Kann folgende Elemente enthalten: - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - CollectGpuEvents - CollectFileIO |
CollectClrEvents | Geben Sie einen Wert an, der festlegt, ob CLR-Ereignisse gesammelt werden. | - True - False |
ClrCollectionOptions | Gibt an, ob CLR-Ereignisse für systemeigene Apps gesammelt werden und ob NGEN-Rundownereignisse erfasst werden sollen. | Kann einen, beide oder keinen der folgenden Werte enthalten: - CollectForNative - DisableNGenRundown |
CollectSampleEvents | Gibt einen Wert an, der festlegt, ob Samplingereignisse gesammelt werden. | - True - False |
CollectGpuEvents | Gibt einen Wert an, der festlegt, ob die von DX erstellten Ereignisse gesammelt werden. | - True - False |
CollectFileIO | Gibt einen Wert an, der festlegt, ob I/O-Ereignisse gesammelt werden. | - True - False |
UserBufferSettings | Gibt die Parameterliste für die Benutzerpuffereinstellungen an. | Muss folgende Elemente enthalten: - BufferFlushTimer - BufferSize - MinimumBuffers - MaximumBuffers |
KernelBufferSettings | Gibt die Parameterliste für die Kernelpuffereinstellungen an. | Muss folgende Elemente enthalten: - BufferFlushTimer - BufferSize - MinimumBuffers - MaximumBuffers |
BufferFlushTimer | Gibt den Leerungszeitgeber der ETW-Puffer an. | Eine positive ganze Zahl. |
BufferSize | Die jedem Sitzungspuffer für die Ereignisablaufverfolgung zugewiesene Menge an Speicher in Kilobyte. | Eine Zahl von 0 bis 1024. |
MinimumBuffers | Die Mindestanzahl an Puffern, die für den Pufferpool der Ereignisablaufverfolgungssitzung zugeordnet sind. | Eine positive ganze Zahl größer oder gleich der doppelten Anzahl logischer Kerne. |
MaximumBuffers | Die maximale Anzahl an Puffern, die für den Pufferpool der Ereignisablaufverfolgungssitzung zugeordnet sind. | Ein Zahl größer oder gleich der MinimumBuffers. |
JustMyCode | Gibt die Liste der Verzeichnisse "Nur mein Code" an. | Eine Liste von null oder mehr MyCodeDirectory-Elementen. |
MyCodeDirectory | Gibt ein Verzeichnis an, das Ihren Code enthält. | Ein absoluter Pfad. |
Beispiel
Statt eine Konfigurationsdatei von vorn zu beginnen, können Sie das folgende Beispiel kopieren und es dann an Ihren Bedarf anpassen.
<?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>