Milyen diagnosztikai eszközök érhetők el a .NET Core-ban?

A szoftverek nem mindig a várt módon viselkednek, de a .NET Core olyan eszközökkel és API-kkal rendelkezik, amelyekkel gyorsan és hatékonyan diagnosztizálhatja ezeket a problémákat.

Ez a cikk segítséget nyújt a szükséges eszközök megtalálásában.

Hibakeresők

A hibakeresők lehetővé teszik a program használatát. A kód szüneteltetése, növekményes végrehajtása, vizsgálata és folytatása betekintést nyújt a kód viselkedésébe. A hibakereső jó választás a könnyen reprodukálható funkcionális problémák diagnosztizálására.

Egységtesztelés

Az egységtesztelés a kiváló minőségű szoftverek folyamatos integrációjának és üzembe helyezésének kulcsfontosságú összetevője. Az egységtesztek úgy lettek kialakítva, hogy korai figyelmeztetést adjanak, ha valamit megszakít.

A megfigyelhetőség rendszerállapota

A .NET támogatja az iparági szabványnak megfelelő rendszerállapot-technikákat metrikák, naplók és elosztott nyomkövetések használatával. A rendszerállapot egy szoftverprojekthez hozzáadott kód, amely rögzíti, hogy mit csinál. Ezek az információk ezután összegyűjthetők fájlokban, adatbázisokban vagy a memóriában, és elemezhetők a szoftverprogramok működésének megértéséhez. Ezt gyakran használják éles környezetekben a problémák monitorozására és diagnosztizálására. A .NET-futtatókörnyezet beépített rendszerállapottal rendelkezik, amely opcionálisan engedélyezhető, valamint API-kkal rendelkezik, amelyek lehetővé teszik az alkalmazáshoz specializált egyéni rendszerállapot hozzáadását.

Mérőszámok

A metrikák az alkalmazás teljesítményének és állapotának monitorozásához rögzített numerikus mérések. A metrikákat gyakran használják riasztások létrehozására, ha lehetséges problémákat észlelnek. A metrikák teljesítménybeli terhelése nagyon alacsony, és számos szolgáltatás mindig naprakész telemetriaként konfigurálja őket.

Naplók

A naplózás egy olyan technika, amelyben a kód egy napló előállítására szolgál, amely a program futása közben történt érdekes események rekordja. A naplóesemények alapkonfigurációja gyakran alapértelmezés szerint be van állítva, és a kiterjedtebb naplózás igény szerint engedélyezhető bizonyos problémák diagnosztizálásához. A teljesítménybeli többletterhelés változó attól függően, hogy mennyi adatot naplóz.

Elosztott nyomkövetések

Az elosztott nyomkövetés a naplózás egy speciális formája, amely segít honosítani a hibákat és a teljesítményproblémákat a több gépen vagy folyamaton elosztott alkalmazásokon belül. Ez a technika egy olyan alkalmazáson keresztül követi nyomon a kéréseket, amelyek egymással korrelálják a különböző alkalmazásösszetevők által végzett munkát, és elkülönítik azokat az alkalmazás által az egyidejű kérések során esetleg végzett többi munkától. Minden kérés nyomon követhető, és a mintavételezés opcionálisan alkalmazható a teljesítménybeli többletterhelés kötéséhez.

Guba

A memóriakép egy olyan fájl, amely a létrehozáskor a folyamat pillanatképét tartalmazza. Ezek hasznosak lehetnek az alkalmazás állapotának hibakeresési célokra történő vizsgálatához.

Szimbólumok

A szimbólumok a forráskód és a fordító által létrehozott bináris fájl közötti leképezések. Ezeket a .NET-hibakeresők gyakran használják a forrássorszámok, a helyi változónevek és más típusú diagnosztikai információk feloldására.

Diagnosztika gyűjtése tárolókban

A nem tárolóalapú Linux-környezetekben használt diagnosztikai eszközök a tárolókban lévő diagnosztikák gyűjtésére is használhatók. Csak néhány használati módosításra van szükség ahhoz, hogy az eszközök működjenek a Docker-tárolóban.

.NET Core diagnosztikai globális eszközök

dotnet-counters

A dotnet-counters egy teljesítményfigyelő eszköz az első szintű állapotmonitorozáshoz és a teljesítményvizsgálathoz. Megfigyeli az API-val EventCounter közzétett teljesítményszámláló-értékeket. Gyorsan figyelheti például a processzorhasználatot vagy a .NET Core-alkalmazásban megjelenő kivételek gyakoriságát.

dotnet-dump

A dotnet-dump eszköz segítségével natív hibakereső nélkül gyűjthet és elemezhet Windows és Linux magos memóriaképeket.

dotnet-gcdump

A dotnet-gcdump eszköz az élő .NET-folyamatok GC (Garbage Collector) memóriaképeinek gyűjtésére használható.

dotnet-trace

A .NET Core tartalmazza az EventPipe úgynevezett diagnosztikai adatokat. A dotnet-trace eszköz lehetővé teszi, hogy érdekes profilkészítési adatokat használjon fel az alkalmazásból, amelyek olyan helyzetekben segíthetnek, amikor az alkalmazások lassú futását kiváltó alapvető okokra van szükség.

dotnet-stack

A dotnet-stack eszközzel gyorsan kinyomtathatja a felügyelt veremeket egy futó .NET-folyamat összes szálához.

dotnet-symbol

A dotnet-symbol letölti a központi memóriakép vagy minidump megnyitásához szükséges fájlokat (szimbólumok, DAC/DBI, gazdafájlok stb.). Akkor használja ezt az eszközt, ha szimbólumokra és modulokra van szüksége egy másik gépen rögzített memóriaképfájl hibakereséséhez.

dotnet-sos

A dotnet-sos telepíti az SOS hibakeresési bővítményt Linux és macOS rendszeren (és Windows a Windbg/cdb használata esetén).

PerfCollect

A PerfCollect egy Bash-szkript, amellyel nyomkövetéseket perfLTTng gyűjthet a Linux-disztribúciókon futó .NET-alkalmazások részletes teljesítményelemzéséhez.

.NET Core diagnosztikai oktatóanyagok

Saját diagnosztikai eszköz írása

A diagnosztikai ügyfélkódtár lehetővé teszi, hogy saját egyéni diagnosztikai eszközt írjon, amely a legjobban megfelel a diagnosztikai forgatókönyvnek. Információk keresése a Microsoft.Diagnostics.NETCore.Client API-referenciában.

Memóriavesztés hibakeresése

Oktatóanyag: A memóriavesztés hibakeresése végigvezeti a memóriavesztés keresésén. A dotnet-counters eszköz a szivárgás megerősítésére, a dotnet-dump eszközt pedig a szivárgás diagnosztizálására használja.

Magas processzorhasználat hibakeresése

Oktatóanyag: A magas processzorhasználat hibakeresése végigvezeti a magas processzorhasználat vizsgálatán. A dotnet-counters eszközzel megerősíti a magas processzorhasználatot. Ezután végigvezeti a Trace teljesítményelemzési segédprogram (dotnet-trace) vagy Linux perf használatával a CPU-használati profilok gyűjtéséhez és megtekintéséhez.

Holtpont hibakeresése

Oktatóanyag: A holtpont hibakeresése bemutatja, hogyan használható a dotnet-dump eszköz a szálak és zárolások vizsgálatára.

ThreadPool-éhezés hibakeresése

Oktatóanyag: A threadPool éhezés hibakeresése bemutatja, hogyan használhatja a dotnet-counters és a dotnet-stack eszközöket a ThreadPool éhezés vizsgálatához.

StackOverflow hibakeresése

Oktatóanyag: A StackOverflow hibakeresése bemutatja, hogyan végezhet hibakeresést StackOverflowException Linuxon.

Linux-memóriaképek hibakeresése

A Linux-memóriaképek hibakeresése ismerteti, hogyan gyűjthet és elemezhet memóriaképeket Linuxon.

Teljesítmény mérése EventCounters használatával

Oktatóanyag: A teljesítmény mérése az EventCounters használatával a .NET-ben bemutatja, hogyan használható az API a EventCounter teljesítmény mérésére a .NET-alkalmazásban.