Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek popisuje diagnostické nástroje a jejich použití v Blazor WebAssembly aplikacích.
Předpoklad pro všechny scénáře
Nainstalujte nástroje sestavení .NET WebAssembly:
dotnet workload install wasm-tools
Jak aplikace WebAssembly používá paměť a jak řešit potíže s nevrácenou pamětí
Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:
<PropertyGroup>
<EnableDiagnostics>true</EnableDiagnostics>
</PropertyGroup>
Výstraha
Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.
Sestavte aplikaci pomocí wasm-tools úlohy.
Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.
Provést výpis spravované paměti voláním collectGcDump JavaScriptového rozhraní API:
globalThis.getDotnetRuntime(0).collectGcDump();
Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.
Soubor .nettrace se stáhne z prohlížeče do místní složky, obvykle do složky ve Downloads Windows.
Převeďte výpis do formátu .gcdump pomocí nástroje dotnet-gcdump. Chcete-li zobrazit převedený .gcdump soubor, použijte Visual Studio nebo PrefView.
Další informace naleznete v tématu Zobrazení výpisu paměti GC zachyceného z dotnet-gcdump.
Jak aplikace WebAssembly používá procesor a jak najít pomalé nebo horké metody
Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:
<PropertyGroup>
<EnableDiagnostics>true</EnableDiagnostics>
<!-- Disable debugger -->
<WasmDebugLevel>0</WasmDebugLevel>
<!-- Sampling in all methods, see below for filtering options -->
<WasmPerformanceInstrumentation>all</WasmPerformanceInstrumentation>
</PropertyGroup>
Výstraha
Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.
Sestavte aplikaci s pracovním zatížením wasm-tools .
Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.
Začněte sbírat ukázky CPU po dobu 60 sekund voláním JavaScriptového collectCpuSamples rozhraní API.
globalThis.getDotnetRuntime(0).collectCpuSamples({durationSeconds: 60});
Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.
Začněte používat aplikaci ke spuštění problematického kódu.
Po předdefinované době prohlížeč stáhne .nettrace soubor do místní složky, obvykle do složky ve Downloads Windows. K zobrazení .nettrace souboru použijte Visual Studio nebo PrefView.
Další informace naleznete v tématu Použití eventPipe k trasování aplikace .NET.
HlavičkaTiming-Allow-Origin HTTP umožňuje přesnější měření času.
Jak sledovat metriky vystavené aplikací WebAssembly
Do souboru projektu aplikace (.csproj) přidejte následující vlastnosti po dobu trvání šetření:
<PropertyGroup>
<EnableDiagnostics>true</EnableDiagnostics>
<MetricsSupport>true</MetricsSupport>
<EventSourceSupport>true</EventSourceSupport>
</PropertyGroup>
Výstraha
Nepovolujte diagnostiku v produkčním prostředí, protože má negativní dopad na výkon.
Sestavte aplikaci s pracovním zatížením wasm-tools .
Otevřete aplikaci v prohlížeči a přejděte na problematické stránky nebo komponenty.
Začněte kolektovat metriky po dobu 60 sekund voláním javascriptového collectMetrics rozhraní API:
globalThis.getDotnetRuntime(0).collectMetrics({durationSeconds: 60});
Volejte předchozí rozhraní API z konzoly vývojářských nástrojů prohlížeče nebo kódu JavaScriptu aplikace.
Po předdefinované době prohlížeč stáhne .nettrace soubor do místní složky, obvykle do složky ve Downloads Windows. K zobrazení .nettrace souboru použijte Visual Studio nebo PrefView.
Další informace naleznete v tématu Použití eventPipe k trasování aplikace .NET.
Vlastnosti nástroje MSBuild, které umožňují integraci diagnostiky
| Vlastnictví | Výchozí | Nastavit hodnotu na... | Popis |
|---|---|---|---|
<EnableDiagnostics> |
false |
true |
Umožňuje podporu trasování výkonu WebAssembly. |
<WasmPerformanceInstrumentation> |
Žádná hodnota | Viz tabulka† | Povolí instrumentaci potřebnou pro profiler vzorkování. Vlastnost se řídí syntaxí callspec . †Povolené hodnoty najdete v následující tabulce. |
<MetricsSupport> |
false |
true |
System.Diagnostics.Metrics Povolí podporu. Další informace najdete v System.Diagnostics.Metrics jmenném prostoru. |
<EventSourceSupport> |
false |
true |
EventPipe Povolí podporu. Další informace najdete v tématu Diagnostika a instrumentace: Pozorovatelnost a telemetrie. |
Následující tabulka popisuje hodnoty, <WasmPerformanceInstrumentation> které lze použít.
<WasmPerformanceInstrumentation> hodnota |
Popis |
|---|---|
all |
Všechna sestavení |
program |
Sestavení vstupního bodu |
{ASSEMBLY} |
Určuje sestavení ({ASSEMBLY}) |
M:Type:{METHOD} |
Určuje metodu ({METHOD}) |
N:{NAMESPACE} |
Určuje obor názvů ({NAMESPACE}) |
T:{TYPE} |
Určuje typ ({TYPE}). |
+EXPR |
Obsahuje výraz |
-EXPR |
Vyloučení výrazu |
Kód by měl často přenechávat kontrolu hlavní smyčce prohlížeče, aby bylo možné shromažďovat stopu. Při provádění dlouhotrvajících smyček by interní diagnostické vyrovnávací paměti mohly přetékat.
Upozornění
Povolení profilátorů a diagnostických nástrojů má negativní vliv na velikost a výkon, takže nepublikujte aplikaci pro produkční prostředí s povolenými profilátory.
Dodatečné zdroje
- EventPipe je komponenta modulu runtime, která se používá k záznamu sledovacích dat, podobně jako ETW (Event Tracing for Windows) a perf_events.
- Jaké diagnostické nástroje jsou k dispozici v .NET Core?
- Diagnostické nástroje .NET
-
dotnet/diagnosticsÚložiště GitHub -
Microsoft.Diagnostics.NETCore.Clientbalíček NuGet