Kivételek hibakeresése a .NET-alkalmazásokban a Snapshot Debugger használatával
Ha engedélyezve van, a Snapshot Debugger automatikusan összegyűjti a forráskód és a változók hibakeresési pillanatképét, amikor kivétel történik az élő .NET-alkalmazásban. A Pillanatkép-hibakereső az Application Insightsban:
- Figyeli a rendszer által létrehozott naplókat a webalkalmazásból.
- Pillanatképeket gyűjt a leggyakoribb kivételekkel kapcsolatban.
- Az éles környezetben előforduló problémák diagnosztizálásához szükséges információkat nyújt.
További információ a Snapshot Debugger és a Snapshot Uploader folyamatairól.
Támogatott alkalmazások és környezetek
Alkalmazások
A pillanatkép-gyűjtemény a következő célokra érhető el:
- .NET-keretrendszer 4.6.2 és újabb verziók.
- .NET 6.0 vagy újabb Windows rendszeren.
Környezetek
A következő környezetek támogatottak:
- Azure App Service
- Azure Functions
- 4- vagy újabb operációs rendszert futtató Azure Cloud Services
- Windows Server 2012 R2 vagy újabb rendszeren futó Azure Service Fabric
- Windows Server 2012 R2 vagy újabb rendszert futtató Azure-beli virtuális gépek és Azure-beli virtuálisgép-méretezési csoportok
- Windows Server 2012 R2 vagy újabb rendszert vagy Windows 8.1 vagy újabb rendszert futtató helyszíni virtuális vagy fizikai gépek
Feljegyzés
Az ügyfélalkalmazások (például WPF, Windows Forms vagy UWP) nem támogatottak.
A Snapshot Debugger használatának előfeltételei
Csomagok és konfigurációk
- Vegye fel a Snapshot Collector NuGet-csomagot az alkalmazásba.
- Gyűjteményparaméterek konfigurálása a következőben
ApplicationInsights.config
: .
Engedélyek
- Ellenőrizze, hogy hozzáadta-e az Application Insights Snapshot Debugger szerepkörhöz a cél Application Insights-pillanatképhez.
A Snapshot Debugger működése
A Snapshot Debugger Application Insights telemetriai processzorként van implementálva. Az alkalmazás futtatásakor a rendszer hozzáadja a Snapshot Debugger telemetriai processzort az alkalmazás rendszer által létrehozott naplóinak folyamatához.
Fontos
A pillanatképek személyes adatokat vagy más bizalmas információkat tartalmazhatnak változó- és paraméterértékekben. A pillanatképadatok ugyanabban a régióban lesznek tárolva, mint az Application Insights-erőforrás.
Pillanatkép-hibakereső folyamat
A Snapshot Debugger folyamat a metódussal TrackException
kezdődik és végződik. A folyamat pillanatképe a futó folyamat felfüggesztett klónja, így a felhasználók alig vagy egyáltalán nem tapasztalnak megszakítást. Egy tipikus forgatókönyvben:
Az alkalmazás eldobja a
TrackException
.A Snapshot Debugger az eseményre való feliratkozással figyeli a
AppDomain.CurrentDomain.FirstChanceException
kivételeket.A problémaazonosító számlálója növekszik.
- Amikor a számláló eléri az
ThresholdForSnapshotting
értéket, a rendszer hozzáadja a problémaazonosítót egy gyűjteménytervhez.
Feljegyzés
Az
ThresholdForSnapshotting
alapértelmezett minimális érték 1. Ezzel az értékkel az alkalmazásnak kétszer kell aktiválnia ugyanazt a kivételt a pillanatkép létrehozása előtt.- Amikor a számláló eléri az
A kivételesemény problémaazonosítóját a rendszer kiszámítja és összehasonlítja a gyűjteménytervben szereplő problémaazonosítókkal.
Ha egyezés van a problémaazonosítók között, létrejön a futó folyamat pillanatképe .
- A pillanatképhez egyedi azonosító van rendelve, és a kivétel ezzel az azonosítóval van lebélyegzve.
Feljegyzés
A pillanatképek létrehozásának sebességét a
SnapshotsPerTenMinutesLimit
beállítás korlátozza. Alapértelmezés szerint a korlát 10 percenként egy pillanatkép.FirstChanceException
A kezelő visszatérése után a rendszer a kidobott kivételt a szokásos módon dolgozza fel.A kivétel ismét eléri a
TrackException
metódust, és jelentést küld az Application Insightsnak a pillanatkép-azonosítóval együtt.
Feljegyzés
Állítsa be IsEnabledInDeveloperMode
, true
ha pillanatképeket szeretne létrehozni a Visual Studióban történő hibakeresés során.
Pillanatkép-feltöltő folyamat
Bár a Pillanatkép-hibakereső folyamat továbbra is fut, és kis megszakítással kiszolgálja a forgalmat a felhasználók számára, a pillanatképet a rendszer átadja a Pillanatkép-feltöltő folyamatnak. Egy tipikus forgatókönyvben a pillanatkép-feltöltő:
Létrehoz egy minidumpot.
Feltölti a minidumpot az Application Insightsba, a megfelelő szimbólumfájlokkal (.pdb) együtt.
Feljegyzés
Naponta legfeljebb 50 pillanatkép tölthető fel.
Ha engedélyezte a Pillanatkép-hibakeresőt, de nem lát pillanatképeket, tekintse meg a hibaelhárítási útmutatót.
Pillanatkép-hibakereső frissítése
A Pillanatkép-hibakereső automatikusan frissít a beépített, előre telepített Application Insights-webhelybővítményen keresztül.
Az Application Insights-webhelybővítmény manuális hozzáadása a Pillanatkép-hibakereső naprakészen tartásához elavult.
Felső
A Snapshot Debugger éles környezetben való használatra lett tervezve. Az alapértelmezett beállítások tartalmazzák a sebességkorlátokat az alkalmazásokra gyakorolt hatás minimalizálása érdekében.
Előfordulhat azonban, hogy a Pillanatkép-hibakeresőhöz kapcsolódó kis processzor-, memória- és I/O-többletterhelést tapasztal, például:
- Kivétel alkalmazása esetén
- Ha a kivételkezelő úgy dönt, hogy pillanatképet hoz létre
- Mikor
TrackException
van meghívva
A Snapshot Debugger által rögzített adatok tárolásának nincs további költsége.
Korlátozások
Ez a szakasz a Pillanatkép-hibakereső korlátozásait ismerteti.
Adatmegőrzés
A hibakeresési pillanatképek 15 napig vannak tárolva. Az alapértelmezett adatmegőrzési szabályzat alkalmazásonként van beállítva. Ha növelnie kell ezt az értéket, kérhet emelést egy támogatási eset megnyitásával az Azure Portalon. Minden Application Insights-példány esetében naponta legfeljebb 50 pillanatkép engedélyezett.
Szimbólumok közzététele
A Pillanatkép-hibakeresőhöz szimbólumfájlok szükségesek az éles kiszolgálón a következőhöz:
- Változók dekódolása
- Hibakeresési élmény biztosítása a Visual Studióban
A Visual Studio 2017 15.2+ verziói alapértelmezés szerint közzéteszik a kiadási buildek szimbólumait az App Service-ben való közzétételkor.
A korábbi verziókban a következő sort kell hozzáadnia a közzétételi profilfájlhoz
.pubxml
, hogy a szimbólumok kiadási módban legyenek közzétéve:<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
Az Azure Compute és más típusok esetében győződjön meg arról, hogy a szimbólumfájlok a következők:
- A fő alkalmazás
.dll
ugyanazon mappájában (általábanwwwroot/bin
), vagy - Elérhető az aktuális útvonalon.
A különböző szimbólumbeállításokról további információt a Visual Studio dokumentációjában talál. A legjobb eredmény érdekében javasoljuk, hogy a Teljes, a Hordozható vagy a Beágyazott elemet használja.
Optimalizált buildek
Bizonyos esetekben a helyi változók nem tekinthetők meg a kiadási buildekben a JIT-fordító által alkalmazott optimalizálás miatt.
Az App Service-ben azonban a Pillanatkép-hibakereső optimalizálni tudja a gyűjtési terv részét képező dobási módszereket.
Tipp.
Telepítse az Application Insights webhelybővítményt az App Service-példányban az inoptimizálás támogatásának igénybevételéhez.
Következő lépések
Az Application Insights Snapshot Debugger engedélyezése az alkalmazáshoz: