Miroslav Holec
Premium

Diagnostické nástroje pro .NET Core 3.0

Miroslav Holec   30. září 2019

Článek se vztahuje k verzi produktu .NET Core 3.0

Tento článek je již zastaralý. Článek nemusí popisovat aktuální stav technologie, ideální řešení a můj současný pohled na dané téma.

.NET Core 3.0 podporuje balík nových diagnostických nástrojů, které mají vývojáři zdarma k dispozici a které umožňují snadno diagnostikovat .NET Core aplikace.

Global Tools

Diagnostické nástroje fungují pouze pro aplikace, které běží nad .NET Core 3.0. Aplikace automaticky emitují různé metriky nebo události, které umí sbírat tzv. global tools a následně je vizualizovat v konzoli. Každý global tool je nutné separátně instalovat.

dotnet-counters

Tento nástroj umí pracovat s metrikami .NET Core aplikace a ukázat v reálném čase využití CPU, operační paměti a garbage collectoru. Instalovat je můžete příkazem:

dotnet tool install --global dotnet-counters

dotnet-trace

Nástroj dotnet-trace pracuje s událostmi (diag traces), které jsou sbírány skrze Windows Event Tracing nebo LTTng na Linuxu. Spuštěním nástroje dojde k profilování aplikace a vytvoření netperf souboru, který lze analyzovat v PerfView. Pro linux a mac lze netperf konvertovat do formátu speedscope (JSON) a analyzovat jej v aplikaci speedscope online. Nástroj můžete instalovat příkazem:

dotnet tool install --global dotnet-dump

dotnet-dump

Zatím pouze pro Windows a Linux můžete použít nástroj dotnet-dump, který umí vytvořit dump vybraného procesu.

dotnet tool install --global dotnet-dump

Na linuxu je oproti Windows dostupná i podpora analýzy dumpu příkazem:

dotnet dump analyze dump-name

LLDB

Pro vývojáře v prostředí Linuxu a macOS se nabízí také využití nástroje LLDB. Pomocí něj se lze připojit k .NET Core procesu a analyzovat jej. K tomu je potřeba SOS plugin, který lze opět instalovat jako dotnet global tool:

dotnet tool install -g dotnet-sos

Abyste nemuseli plugin do LLDB pokaždé připojovat, stačí provolat:

dotnet-sos install

a po dalším spuštění LLDB se automaticky zpřístupní i SOS. Řada příkazů z SOS se navíc zpřístupní skrze aliasy přímo v LLDB.

V LLDB lze dále nastavit symbol server zavoláním příkazu

setsymbolserver -ms

Více o diagnostických nástrojích včetně příkladů se dočtete na GitHubu.