Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Możesz użyć narzędzia wiersza polecenia Concurrency Visualizer (CVCollectionCmd.exe), aby zbierać ślady z wiersza polecenia, aby można je było wyświetlić w wizualizatorze współbieżności dla programu Visual Studio. Narzędzia mogą być używane na komputerach, na których nie zainstalowano programu Visual Studio.
Uwaga / Notatka
Wizualizator współbieżności jest opcjonalnym rozszerzeniem. (Wcześniej była ona zawarta w programie Visual Studio). Narzędzia kolekcji Concurrency Visualizer dla programu Visual Studio można pobrać z Centrum pobierania.
Pobierz narzędzie wiersza polecenia Concurrency Visualizer
Aby pobrać i zainstalować narzędzie wiersza polecenia, przejdź do narzędzia Concurrency Visualizer Collection Tools for Visual Studio i postępuj zgodnie z instrukcjami. Domyślnie CVCollectionCmd.exe jest instalowana w %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ na komputerach x64).
Zbierz ślad za pomocą polecenia CVCollectionCmd
Możesz zebrać ślad, uruchamiając aplikację za pomocą cvCollectionCmd lub dołączając do niej. Aby zobaczyć dostępne opcje, zapoznaj się z poniższym zestawieniem poleceń. Na przykład
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Polecenia i parametry
Aby uzyskać pomoc dotyczącą poleceń i parametrów w narzędziu wiersza polecenia, wpisz to w wierszu polecenia:
CvCollectionCmd /?
| Option | Description | Parametry | Wartości zwracane |
|---|---|---|---|
| Query | Zwraca, czy można uruchomić kolekcję. | Żaden | 0, jeśli zbiór jest gotowy do uruchomienia. 1, jeśli kolekcja jest już w toku. 2, jeśli kolekcja nie jest w toku, ale co najmniej jedna z wymaganych sesji ETW jest już włączona. |
| Launch | Uruchamia określony proces w ramach wizualizatora współbieżności. | Ścieżka pliku wykonywalnego. | 0, jeśli przebieg zakończył się pomyślnie. 1, jeśli uruchomienie nie powiodło się, ponieważ nie można uruchomić aplikacji docelowej. 13, jeśli uruchomienie nie powiodło się, ponieważ CVCollectionCmd ma niewystarczające uprawnienia do zapisu w określonym katalogu wyjściowym. |
| Dołączyć | Rozpoczyna zbieranie śladu całego systemu; w przeciwnym razie dołącza się do procesu, jeśli został określony. | Żaden. | 0, jeśli załącznik zakończył się pomyślnie. 1, jeśli załącznik nie powiódł się, ponieważ określony proces jest nieprawidłowy lub niejednoznaczny. 13, jeśli załącznik nie powiódł się, ponieważ CVCollectionCmd ma niewystarczające uprawnienia do zapisu w określonym katalogu wyjściowym. |
| Detach | Zatrzymuje kolekcjonowanie. | Żaden. | 0, jeśli odłączenie zakończyło się pomyślnie. 1, jeśli odłączenie nie powiodło się, ponieważ zbieranie danych nie jest obecnie przeprowadzane. 2, jeśli odłączenie nie powiodło się, ponieważ nie można zatrzymać zbierania danych. |
| Analiza | Analizuje określony ślad. | Pełna ścieżka pliku CVTrace. | 0, jeśli analiza zakończyła się pomyślnie. 1 jeśli nie można uruchomić analizy, ponieważ określony ślad był w całym systemie, ale nie określono żadnego procesu docelowego. 2 jeśli nie można uruchomić analizy, ponieważ śledzenie nie było w całym systemie i określono proces. 3 jeśli analiza nie powiodła się, ponieważ określony proces jest nieprawidłowy. 4 jeśli analiza nie powiodła się, ponieważ określony plik CVTrace jest nieprawidłowy. |
| LaunchArgs | Określa docelowe argumenty wykonywalne. Ta opcja dotyczy tylko polecenia Uruchom. | Argumenty wiersza polecenia dla aplikacji. | Żaden. |
| Outdir | Określa katalog, w którym mają być zapisywane pliki śledzenia. Dotyczy poleceń Uruchamiania i Podłączania. | Ścieżka katalogu lub ścieżka względna. | Żaden. |
| Proces | Określa proces, do którego należy dołączyć, gdy wykonywane jest polecenie Dołączanie, lub proces w ścieżce, który należy przeanalizować po wykonaniu polecenia Analizuj. Dotyczy poleceń Dołącz i Analizuj. | Identyfikator PID lub nazwa procesu. | Żaden. |
| Config | Określa ścieżkę pliku konfiguracji, jeśli chcesz ustawić ustawienia kolekcji inne niż domyślne. Dotyczy poleceń Uruchamiania, Dołączania i Analizowania. | Ścieżka katalogu lub ścieżka względna pliku konfiguracji XML. | Żaden. |
Dostosowywanie ustawień konfiguracji
Jeśli używasz cvCollectionCmd do zbierania śladów i chcesz dostosować ustawienia kolekcji, użyj pliku konfiguracji, aby je określić.
Uwaga / Notatka
W przypadku zbierania śladów przy użyciu programu Visual Studio nie należy bezpośrednio modyfikować pliku konfiguracji. Zamiast tego użyj okna dialogowego Ustawienia zaawansowane , aby zmodyfikować ustawienia.
Aby zmodyfikować ustawienia kolekcji, utwórz plik konfiguracji na maszynie, na której zostanie uruchomione narzędzie CVCollectionCmd. Możesz utworzyć plik konfiguracji od podstaw lub skopiować plik konfiguracji na komputerze z zainstalowanym programem Visual Studio i zmodyfikować go. Plik ma nazwę UserConfig.xml i znajduje się w folderze Local AppData . Po uruchomieniu narzędzia użyj opcji Config w połączeniu z poleceniem Uruchom, Dołącz lub Analizuj. W parametrze skojarzonym z opcją Config określ ścieżkę pliku konfiguracji.
Tagi plików konfiguracji
Plik konfiguracji jest oparty na formacie XML. Oto prawidłowe tagi i wartości:
| Tag | Description | Wartości |
|---|---|---|
| Config | Określa ogólny plik konfiguracyjny. | Musi zawierać następujące elementy: - Wersja pomocnicza - MajorVersion |
| Wersja główna | Określa wersję główną pliku konfiguracji. | Musi być 1 dla większości projektów programu Visual Studio. Jeśli nie ma wartości 1, narzędzie nie będzie działać. |
| Wersja pomocnicza | Określa wersję podrzędną pliku konfiguracji. | Musi być 0 dla większości projektów programu Visual Studio. Jeśli nie ma wartości 0, narzędzie nie będzie działać. |
| IncludeEnvSymbolPath | Ustawia wartość, która decyduje, czy ścieżka symbolu środowiska (_NT_SYMBOL_PATH) jest używana. | -Prawdziwy -Fałszywy |
| UsuńEtlsPoAnalizie | Ustawia wartość określającą, czy pliki ETL są usuwane po zakończeniu analizy. | -Prawdziwy -Fałszywy |
| SymbolPath | Określa ścieżkę serwera symboli. Aby uzyskać więcej informacji, zobacz Uzyskiwanie plików symboli debugowania za pomocą programu Microsoft Symbol Server. | Nazwa katalogu lub adres URL. |
| Znaczniki | Zawiera listę dostawców znaczników. | Może zawierać zero lub więcej elementów MarkerProvider. |
| MarkerProvider | Określa pojedynczego dostawcę znacznika. | Musi zawierać następujące elementy: - Poziom - GUID (Globalny Unikalny Identyfikator) - Nazwa Może zawierać następujące elementy: -Kategorie - IsEnabled |
| Level | Ustawia poziom ważności dla MarkerProvider. | -Niski -Normalny -Wysoki -Krytyczny -Wszystko |
| Przewodnik | Globalnie unikalny identyfikator dostawcy znacznika ETW. | Identyfikator GUID. |
| Name | Określa opis dostawcy znaczników. | Ciąg. |
| Kategorie | Określa kategorie zebrane dla dostawcy znaczników. | Rozdzielany przecinkami ciąg liczb lub zakresów liczb. |
| JestWłączony | Ustawia wartość określającą, czy dostawca znacznika jest włączony do zbioru danych. | -Prawdziwy -Fałszywy |
| FilterConfig | Określa listę opcji konfiguracji zdarzeń ETW, które są filtrowane z kolekcji. | Może zawierać następujące elementy: - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - CollectGpuEvents - CollectFileIO |
| CollectClrEvents | Ustaw wartość, która określa, czy zdarzenia CLR są zbierane. | -Prawdziwy -Fałszywy |
| ClrCollectionOptions | Określa, czy zbierać zdarzenia CLR dla aplikacji natywnych oraz czy rejestrować zdarzenia NGEN typu rundown. | Może zawierać jedną lub żadną z tych wartości: - CollectForNative - DisableNGenRundown |
| CollectSampleEvents | Ustawia wartość określającą, czy są zbierane przykładowe zdarzenia. | -Prawdziwy -Fałszywy |
| CollectGpuEvents | Ustawia wartość określającą, czy zdarzenia generowane przez DX są zbierane. | -Prawdziwy -Fałszywy |
| CollectFileIO | Ustawia wartość określającą, czy zbierać zdarzenia wejścia/wyjścia pliku. | -Prawdziwy -Fałszywy |
| UstawieniaBuferaUżytkownika | Określa listę parametrów ustawień buforu użytkownika. | Musi zawierać następujące elementy: - BufferFlushTimer - RozmiarBufora - MinimumBuffers - MaximumBuffers |
| Ustawienia Bufora Jądra | Określa listę parametrów ustawień buforu jądra. | Musi zawierać następujące elementy: - BufferFlushTimer - Rozmiar Buforu - MinimumBuffers - MaximumBuffers |
| BufferFlushTimer | Określa licznik opróżniania buforów ETW. | Dodatnia liczba całkowita. |
| RozmiarBufera | Ilość pamięci przydzielonej dla każdego buforu sesji śledzenia zdarzeń w kilobajtach. | Liczba z zakresu od 0 do 1024. |
| MinimumBuffers | Minimalna liczba buforów, które są przydzielone dla puli buforów sesji śledzenia zdarzeń. | Dodatnia liczba całkowita większa lub równa dwukrotnie liczbie rdzeni logicznych. |
| Maksymalna liczba buforów | Maksymalna liczba buforów, które są przydzielane do puli buforów sesji śledzenia zdarzeń. | Liczba większa lub równa MinimumBuffers. |
| JustMyCode | Określa listę katalogów Just My Code. | Lista zera lub większej liczby elementów MyCodeDirectory. |
| MyCodeDirectory | Określa katalog zawierający kod. | Ścieżka bezwzględna. |
Example
Zamiast tworzyć plik konfiguracji od początku, możesz skopiować poniższy przykład, a następnie zmodyfikować go w celu spełnienia wymagań.
<?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>