Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können das Kommandozeilenprogramm Concurrency Visualizer (CVCollectionCmd.exe) verwenden, um Traces aus der Befehlszeile zu sammeln, damit Sie sie im Concurrency Visualizer für Visual Studio anzeigen können. Die Tools können auf Computern verwendet werden, auf denen Visual Studio nicht installiert ist.
Hinweis
Die Concurrency Visualizer ist eine optionale Erweiterung. (Zuvor war es in Visual Studio enthalten.) Sie können die Concurrency Visualizer-Sammlungstools für Visual Studio aus dem Download Center herunterladen.
Herunterladen des Befehlszeilenprogramms "Concurrency Visualizer"
Um das Befehlszeilen-Dienstprogramm herunterzuladen und zu installieren, gehen Sie zu Concurrency Visualizer Collection Tools für Visual Studio 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 x64-Computern installiert.
Sammeln Sie eine Ablaufverfolgung mit CVCollectionCmd
Sie können eine Ablaufverfolgung sammeln, indem Sie die App mit CVCollectionCmd starten oder an sie anfügen. Siehe die untenstehende Befehlsreferenz für Ihre Optionen. Beispiel:
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Befehle und Parameter
Um Hilfe zu den Befehlen und Parametern im Befehlszeilenprogramm zu erhalten, geben Sie dies an der Eingabeaufforderung ein:
CvCollectionCmd /?
| Option | Description | Die Parameter | Rückgabewerte |
|---|---|---|---|
| Query | Gibt an, ob die Sammlung gestartet werden kann. | Nichts | 0, wenn die Erfassung bereit zum Start ist. 1, wenn die Erhebung bereits läuft. 2, wenn die Erfassung nicht im Gange ist, aber bereits eine oder mehrere der ETW-Sitzungen aktiviert ist. |
| Launch | Führt den angegebenen Prozess mit dem Concurrency Visualizer aus. | Der Pfad der ausführbaren Datei. | 0, wenn die Ausführung erfolgreich war. 1, wenn die Ausführung fehlgeschlagen ist, da die Zielanwendung nicht gestartet werden konnte. 13, wenn die Ausführung fehlgeschlagen ist, da CVCollectionCmd über unzureichende Berechtigungen zum Schreiben in das angegebene Ausgabeverzeichnis verfügt. |
| Attach | Beginnt mit der Erfassung einer systemweiten Ablaufverfolgung; andernfalls wird an einen Prozess angehängt, wenn ein Prozess angegeben wurde. | Keiner. | 0, wenn die Verknüpfung erfolgreich war. 1, wenn das Anfügen des Anhangs fehlgeschlagen ist, weil der angegebene Prozess ungültig oder mehrdeutig ist. 13, weil der Anhang fehlschlug, da CVCollectionCmd nicht genügend Berechtigungen hat, um in das angegebene Ausgabeverzeichnis zu schreiben. |
| Detach | Stoppt die Sammlung. | Keiner. | 0, wenn die Trennung erfolgreich war. 1, wenn die Trennung fehlgeschlagen ist, da die Sammlung derzeit nicht ausgeführt wird. 2, wenn die Trennung fehlgeschlagen ist, weil die Sammlung nicht gestoppt werden konnte. |
| Analyze | Analysiert die angegebene Ablaufverfolgung. | Der vollständige Pfad der CVTrace-Datei. | 0, wenn die Analyse erfolgreich war. 1, wenn die Analyse nicht gestartet werden kann, weil die angegebene Ablaufverfolgung systemweit war, aber kein Zielprozess angegeben wurde. 2, wenn die Analyse nicht gestartet werden kann, weil das Tracing nicht systemweit war und ein Prozess angegeben wurde. 3, wenn die Analyse fehlgeschlagen ist, da der angegebene Prozess ungültig ist. 4, wenn die Analyse fehlgeschlagen ist, da die angegebene CVTrace-Datei ungültig ist. |
| LaunchArgs | Gibt die ausführbaren Zielargumente an. Diese Option gilt nur für den Befehl "Start". | Die Befehlszeilenargumente für die Anwendung. | Keiner. |
| Outdir | Gibt das Verzeichnis an, in dem Ablaufverfolgungsdateien gespeichert werden sollen. Gilt für die Befehle "Start" und "Anfügen". | Ein Verzeichnispfad oder relativer Pfad. | Keiner. |
| Prozess | Gibt den Prozess an, der angefügt werden soll, wenn der Befehl "Anfügen" ausgeführt wird, oder den Prozess in einem Trace-Protokoll, der analysiert werden soll, wenn der Befehl "Analysieren" ausgeführt wird. Gilt für die Befehle "Anfügen" und "Analysieren". | Die PID oder der Name des Prozesses. | Keiner. |
| Konfiguration | Gibt den Pfad der Konfigurationsdatei an, wenn Sie andere Sammlungseinstellungen als die Standardwerte verwenden möchten. Gilt für die Befehle "Start", "Anfügen" und "Analysieren". | Der Verzeichnispfad oder relative Pfad der XML-Konfigurationsdatei. | Keiner. |
Anpassen von Konfigurationseinstellungen
Wenn Sie CVCollectionCmd zum Sammeln von Traces verwenden und die Sammlungseinstellungen anpassen möchten, verwenden Sie eine Konfigurationsdatei, um diese anzugeben.
Hinweis
Wenn Sie Visual Studio zum Sammeln von Ablaufverfolgungen verwenden, ändern Sie die Konfigurationsdatei nicht direkt. Verwenden Sie stattdessen das Dialogfeld "Erweiterte Einstellungen ", um Einstellungen zu ändern.
Erstellen Sie zum Ändern der Sammlungseinstellungen eine Konfigurationsdatei auf dem Computer, auf dem Sie das Hilfsprogramm CVCollectionCmd ausführen. Sie können die Konfigurationsdatei von Grund auf neu erstellen, oder Sie können die Konfigurationsdatei auf dem Computer kopieren, auf dem Visual Studio installiert und geändert wurde. Die Datei heißt UserConfig.xml und befindet sich im Ordner "Local AppData ". Wenn Sie das Hilfsprogramm ausführen, verwenden Sie die Option "Config" in Verbindung mit dem Befehl "Start", "Anfügen" oder "Analysieren". Geben Sie im Parameter, der der Konfigurationsoption zugeordnet ist, den Pfad der Konfigurationsdatei an.
Konfigurationsdateitags
Die Konfigurationsdatei ist XML-basiert. Hier sind die gültigen Tags und Werte:
| Tag | Description | Werte |
|---|---|---|
| Konfiguration | Klammert die gesamte Konfigurationsdatei ab. | Muss diese Elemente enthalten: - MinorVersion - Hauptversion |
| MajorVersion | Gibt die Hauptversion der Konfigurationsdatei an. | Muss für die meisten Visual Studio-Projekte 1 sein. Wenn es nicht 1 ist, wird das Dienstprogramm nicht funktionieren. |
| MinorVersion | Gibt die Unterversion der Konfigurationsdatei an. | Muss für die meisten Visual Studio-Projekte 0 sein. Wenn es nicht 0 ist, funktioniert das Dienstprogramm nicht. |
| IncludeEnvSymbolPath | Legt einen Wert fest, der bestimmt, ob der Umgebungssymbolpfad (_NT_SYMBOL_PATH) verwendet wird. | -STIMMT – Falsch |
| LöscheEtlsNachAnalyse | Legt einen Wert fest, der bestimmt, ob die ETL-Dateien gelöscht werden, wenn die Analyse abgeschlossen ist. | -STIMMT – Falsch |
| SymbolPath | Gibt den Pfad des Symbolservers an. Weitere Informationen finden Sie unter Verwenden des Microsoft Symbol-Servers zum Abrufen von Debugsymboldateien. | Ein Verzeichnisname oder eine URL. |
| Markierungen | Enthält die Liste der Markeranbieter. | Kann null oder mehr MarkerProvider-Elemente enthalten. |
| MarkerProvider | Gibt einen einzelnen Markierungsanbieter an. | Muss diese Elemente enthalten: -Niveau - GUID - Name Kann diese Elemente enthalten: -Kategorien - IsEnabled |
| Ebene | Legt die Wichtigkeitsebene eines MarkerProviders fest. | -Niedrig -Normal -Hoch -Kritisch -Alles |
| Leitfaden | Der global eindeutige Bezeichner des ETW-Markeranbieters. | Eine GUID. |
| Name | Gibt die Beschreibung des Markierungsanbieters an. | Eine Zeichenfolge. |
| Kategorien | Gibt die kategorien an, die für den Markierungsanbieter gesammelt wurden. | Eine durch Trennzeichen getrennte Zeichenfolge von Zahlen oder Zahlenbereichen. |
| IsEnabled | Legt einen Wert fest, der bestimmt, ob der Markeranbieter zur Sammlung aktiviert ist. | -STIMMT – Falsch |
| FilterConfig | Gibt die Liste der Konfigurationsoptionen der ETW-Ereignisse an, die aus der Sammlung gefiltert werden. | Kann diese Elemente enthalten: - CollectClrEvents (CLR-Ereignisse sammeln) - ClrCollectionOptions - EreignisseSammeln - SammleGpuEreignisse - CollectFileIO |
| CollectClrEvents | Legen Sie einen Wert fest, der bestimmt, ob CLR-Ereignisse erfasst werden. | -STIMMT – Falsch |
| ClrCollectionOptions | Gibt an, ob CLR-Ereignisse für native Apps erfasst werden sollen und ob NGEN-Rundown-Ereignisse erfasst werden sollen. | Kann einen, beide oder keinen dieser Werte enthalten: - CollectForNative - DisableNGenRundown |
| CollectSampleEvents | Legt einen Wert fest, der bestimmt, ob Beispielereignisse erfasst werden. | -STIMMT – Falsch |
| CollectGpuEvents | Legt einen Wert fest, der bestimmt, ob die von DX generierten Ereignisse erfasst werden. | -STIMMT – Falsch |
| CollectFileIO | Legt einen Wert fest, der bestimmt, ob Datei-E/A-Ereignisse erfasst werden. | -STIMMT – Falsch |
| Benutzerpuffereinstellungen | Gibt die Liste der Parameter für Benutzerpuffereinstellungen an. | Muss diese Elemente enthalten: - BufferFlushTimer - Puffergröße - MinimumBuffers - MaximumBuffers |
| Kernel-Puffereinstellungen | Gibt die Liste der Kernelpuffereinstellungen an. | Muss diese Elemente enthalten: - BufferFlushTimer - Puffergröße - MinimumBuffers - MaximumBuffers |
| BufferFlushTimer | Gibt den Flush-Timer der ETW-Puffer an. | Eine positive ganze Zahl |
| Puffergröße | Der für jeden Ereignisablaufverfolgungssitzungspuffer zugeordnete Arbeitsspeicher in Kilobyte. | Eine Zahl von 0 bis 1024. |
| MinimumBuffers | Die Mindestanzahl der Puffer, die für den Pufferpool der Ereignisablaufverfolgungssitzung zugeordnet sind. | Eine positive ganze Zahl größer oder gleich doppelt der Anzahl der logischen Kerne. |
| MaximumBuffers | Maximale Anzahl von Puffern, die für den Pufferpool der Ereignisprotokollierungssitzung zugeordnet sind. | Eine Zahl größer oder gleich MinimumBuffers. |
| JustMyCode | Gibt die Liste der Just My Code-Verzeichnisse an. | Eine Liste mit null oder mehr MyCodeDirectory-Elementen. |
| MyCodeDirectory | Gibt ein Verzeichnis an, das Ihren Code enthält. | Ein absoluter Pfad. |
Example
Anstatt eine Konfigurationsdatei von Anfang an zu erstellen, können Sie das folgende Beispiel kopieren und dann so ändern, dass sie Ihren Anforderungen entspricht.
<?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>