Nástroj příkazového řádku Vizualizéru souběžnosti (CVCollectionCmd)
Pomocí nástroje příkazového řádku Concurrency Visualizer (CVCollectionCmd.exe) můžete shromažďovat trasování z příkazového řádku, abyste je mohli zobrazit v Vizualizéru souběžnosti pro Visual Studio. Nástroje lze použít na počítačích, které nemají nainstalovanou sadu Visual Studio.
Poznámka:
Vizualizér souběžnosti je volitelné rozšíření. (Dříve byla součástí sady Visual Studio.) Nástroje pro kolekci Vizualizéru souběžnosti pro Visual Studio si můžete stáhnout z webu Download Center.
Stažení nástroje příkazového řádku Vizualizéru souběžnosti
Pokud chcete stáhnout a nainstalovat nástroj příkazového řádku, přejděte do části Nástroje kolekce Vizualizéru souběžnosti pro Visual Studio a postupujte podle pokynů. Ve výchozím nastavení je cvCollectionCmd.exe nainstalován v %ProgramFiles%\Microsoft Concurrency Visualizer Collection Tools\ (%ProgramFiles(x86)%\Microsoft Concurrency Visualizer Collection Tools\ na počítačích x64).
Shromáždění trasování pomocí CVCollectionCmd
Trasování můžete shromáždit spuštěním aplikace pomocí CVCollectionCmd nebo připojením k ní. Možnosti najdete v následujících referenčních informacích k příkazům. Například
<Path>CVCollectionCmd /launch c:\myapp\myapp.exe /outdir c:\myapp\data
Příkazy a parametry
Pokud chcete získat nápovědu k příkazům a parametrům v nástroji příkazového řádku, zadejte tento příkaz na příkazovém řádku:
CvCollectionCmd /?
Možnost | Popis | Parametry | Vrácené hodnoty |
---|---|---|---|
Dotaz | Vrátí, zda je možné spustit kolekci. | Nic | 0, pokud je kolekce připravená k zahájení. 1, pokud již probíhá shromažďování. 2, pokud shromažďování neprobíhá, ale jedna nebo více požadovaných relací Trasování událostí pro Windows je již povolená. |
Launch | Spustí zadaný proces v rámci Vizualizéru souběžnosti. | Cesta ke spustitelnému souboru. | 0, pokud bylo spuštění úspěšné. 1, pokud spuštění selhalo, protože cílovou aplikaci nebylo možné spustit. 13 Pokud spuštění selhalo, protože CVCollectionCmd nemá dostatečná oprávnění k zápisu do zadaného výstupního adresáře. |
Připojit | Začíná shromažďovat trasování v celém systému; v opačném případě se připojí k procesu, pokud je zadaný. | Nezaokrouhlovat. | 0, pokud byla příloha úspěšná. 1, pokud se příloha nezdařila, protože zadaný proces je neplatný nebo nejednoznačný. 13 Pokud příloha selhala, protože CVCollectionCmd nemá dostatečná oprávnění k zápisu do zadaného výstupního adresáře. |
Odpojit | Zastaví shromažďování. | Nezaokrouhlovat. | 0, pokud bylo odpojení úspěšné. 1, pokud odpojení selhalo, protože kolekce aktuálně neprobíhá. 2, pokud odpojení selhalo, protože kolekci nebylo možné zastavit. |
Analyzovat | Analyzuje zadané trasování. | Úplná cesta k souboru CVTrace. | 0, pokud byla analýza úspěšná. 1, pokud analýza nemůže spustit, protože zadané trasování bylo systémové, ale nebyl zadán žádný cílový proces. 2 Pokud analýza nemůže spustit, protože trasování nebylo v celém systému a byl zadán proces. 3, pokud analýza selhala, protože zadaný proces je neplatný. 4 pokud analýza selhala, protože zadaný soubor CVTrace je neplatný. |
LaunchArgs | Určuje cílové spustitelné argumenty. Tato možnost se vztahuje pouze na příkaz Spustit. | Argumenty příkazového řádku aplikace. | Nezaokrouhlovat. |
Outdir | Určuje adresář, do kterého se mají ukládat trasovací soubory. Platí pro příkazy Spustit a Připojit. | Cesta k adresáři nebo relativní cesta. | Nezaokrouhlovat. |
Zpracovat | Určuje proces, ke který se má připojit při spuštění příkazu Attach, nebo proces v trasování, který se má analyzovat při spuštění příkazu Analyzovat. Platí pro příkazy Připojit a Analyzovat. | KÓD PID nebo název procesu. | Nezaokrouhlovat. |
Config | Určuje cestu ke konfiguračnímu souboru, pokud chcete, aby nastavení kolekce byla jiná než výchozí nastavení. Platí pro příkazy Launch, Attach a Analyze. | Cesta k adresáři nebo relativní cesta konfiguračního souboru XML. | Nezaokrouhlovat. |
Přizpůsobení nastavení konfigurace
Pokud použijete CVCollectionCmd ke shromažďování trasování a chcete přizpůsobit nastavení kolekce, použijte konfigurační soubor k jejich určení.
Poznámka:
Pokud ke shromažďování trasování používáte Visual Studio, neupravujte konfigurační soubor přímo. Místo toho použijte dialogové okno Upřesnit Nastavení ke změně nastavení.
Chcete-li upravit nastavení kolekce, vytvořte konfigurační soubor na počítači, ve kterém spustíte nástroj CVCollectionCmd. Konfigurační soubor můžete vytvořit úplně od začátku nebo můžete konfigurační soubor zkopírovat do počítače s nainstalovanou sadou Visual Studio a upravit ho. Soubor má název UserConfig.xml a nachází se ve složce Local AppData . Při spuštění nástroje použijte možnost Konfigurace ve spojení s příkazem Spustit, Připojit nebo Analyzovat. V parametru přidruženém k možnosti Konfigurace zadejte cestu konfiguračního souboru.
Značky konfiguračních souborů
Konfigurační soubor je založený na jazyce XML. Tady jsou platné značky a hodnoty:
Značka (tag) | Popis | Hodnoty |
---|---|---|
Config | Demarcats the overall config file. | Musí obsahovat tyto prvky: -Minorversion - MajorVersion |
MajorVersion | Určuje hlavní verzi konfiguračního souboru. | Pro většinu projektů sady Visual Studio musí být 1. Pokud není 1, nástroj nebude fungovat. |
Minorversion | Určuje podverzi konfiguračního souboru. | Pro většinu projektů sady Visual Studio musí být 0. Pokud není 0, nástroj nebude fungovat. |
IncludeEnvSymbolPath | Nastaví hodnotu, která určuje, jestli se používá cesta symbolu prostředí (_NT_SYMBOL_PATH). | -Pravda -False |
DeleteEtlsAfterAnalysis | Nastaví hodnotu, která určuje, jestli se soubory ETL po dokončení analýzy odstraní. | -Pravda -False |
SymbolPath | Určuje cestu serveru symbolů. Další informace naleznete v tématu Použití serveru symbolů společnosti Microsoft k získání souborů symbolů ladění. | Název adresáře nebo adresa URL. |
Značky | Obsahuje seznam zprostředkovatelů značek. | Může obsahovat nula nebo více elementů MarkerProvider. |
MarkerProvider | Určuje jednoho zprostředkovatele značek. | Musí obsahovat tyto prvky: -Úrovni -IDENTIFIKÁTOR GUID -Jméno Může obsahovat tyto prvky: -Kategorie -Isenabled |
Level | Nastaví úroveň důležitosti MarkerProvideru. | -Nízké -Normální -Vysoké - Kritická -Všechno |
Guid | Globálně jedinečný identifikátor zprostředkovatele značek pro Windows. | IDENTIFIKÁTOR GUID. |
Název | Určuje popis zprostředkovatele značek. | Řetězec. |
Kategorie | Určuje kategorie shromážděné pro zprostředkovatele značek. | Řetězec s oddělovači čísel nebo oblastí čísel. |
IsEnabled | Nastaví hodnotu, která určuje, jestli je pro kolekci povolený zprostředkovatel značek. | -Pravda -False |
FilterConfig | Určuje seznam možností konfigurace událostí pro Windows, které jsou filtrovány z kolekce. | Může obsahovat tyto prvky: - CollectClrEvents - ClrCollectionOptions - CollectSampleEvents - CollectGpuEvents - CollectFileIO |
CollectClrEvents | Nastavte hodnotu, která určuje, zda se shromažďují události CLR. | -Pravda -False |
ClrCollectionOptions | Určuje, jestli se mají shromažďovat události CLR pro nativní aplikace a jestli se mají shromažďovat události rundownu NGEN. | Může obsahovat jednu, obě nebo žádnou z těchto hodnot: - CollectForNative – DisableNGenRundown |
CollectSampleEvents | Nastaví hodnotu, která určuje, jestli se shromažďují ukázkové události. | -Pravda -False |
CollectGpuEvents | Nastaví hodnotu, která určuje, jestli se shromažďují události generované dx. | -Pravda -False |
CollectFileIO | Nastaví hodnotu, která určuje, jestli se shromažďují vstupně-výstupní události souboru. | -Pravda -False |
UserBuffer Nastavení | Určuje seznam parametrů nastavení vyrovnávací paměti uživatele. | Musí obsahovat tyto prvky: - BufferFlushTimer -Buffersize - MinimumBuffers - MaximumBuffers |
KernelBuffer Nastavení | Určuje seznam parametrů nastavení vyrovnávací paměti jádra. | Musí obsahovat tyto prvky: - BufferFlushTimer -Buffersize - MinimumBuffers - MaximumBuffers |
BufferFlushTimer | Určuje časovač vyprázdnění vyrovnávacích pamětí pro Windows. | Kladné celé číslo. |
Buffersize | Množství paměti přidělené pro každou vyrovnávací paměť relace trasování událostí v kilobajtech. | Číslo od 0 do 1024. |
MinimumBuffers | Minimální počet vyrovnávacích pamětí přidělených pro fond vyrovnávací paměti relace trasování událostí. | Kladné celé číslo větší nebo rovno dvojnásobku počtu logických jader. |
MaximumBuffers | Maximální počet vyrovnávacích pamětí přidělených pro fond vyrovnávací paměti relace trasování událostí. | Číslo větší nebo rovno MinimumBuffers. |
JustMyCode | Určuje seznam adresářů Just My Code. | Seznam nulových nebo více elementů MyCodeDirectory. |
MyCodeDirectory | Určuje adresář, který obsahuje váš kód. | Absolutní cesta. |
Příklad
Místo vytvoření konfiguračního souboru od začátku můžete zkopírovat následující příklad a upravit ho tak, aby splňoval vaše požadavky.
<?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>