Kivételek hibakeresése .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.

Támogatott alkalmazások és környezetek

Alkalmazások

A pillanatkép-gyűjtemény a következő célokra érhető el:

Környezetek

A Pillanatkép-hibakereső a következő környezeteket támogatja:

Feljegyzés

Az ügyfélalkalmazások, például a WPF, a Windows Forms vagy az UWP nem támogatottak.

A Snapshot Debugger előfeltételei

Csomagok és konfigurációk

Engedélyek

A Snapshot Debugger működése

A Snapshot Debugger Application Insights telemetriai processzorként működik. Az alkalmazás futtatásakor a Snapshot Debugger telemetriai processzor csatlakozik az alkalmazás rendszer által létrehozott naplóihoz.

Fontos

A pillanatképek személyes adatokat vagy más bizalmas információkat tartalmazhatnak változó- és paraméterértékekben. Az Application Insights a pillanatképadatokat ugyanabban a régióban tárolja, mint az 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. A felhasználók alig vagy egyáltalán nem tapasztalnak megszakítást. Egy tipikus forgatókönyvben:

  1. Az alkalmazás kivételt jelez az Application Insightsnak a TrackException metódus meghívásával.

  2. A Snapshot Debugger az eseményre való feliratkozással figyeli a AppDomain.CurrentDomain.FirstChanceException kivételeket.

  3. A Snapshot Debugger növeli a problémaazonosítóhoz tartozó számlálót.

    Amikor a számláló eléri az ThresholdForSnapshotting értéket, a Pillanatkép-hibakereső 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, mielőtt a Pillanatkép-hibakereső létrehoz egy pillanatképet.

  4. A Pillanatkép-hibakereső kiszámítja a kivételesemény problémaazonosítóját, és összehasonlítja a gyűjteménytervben szereplő problémaazonosítókkal.

  5. Ha egyezés van a problémaazonosítók között, a Pillanatkép-hibakereső pillanatképet hoz létre a futó folyamatról.

    A Pillanatkép-hibakereső egy egyedi azonosítót rendel a pillanatképhez, és ezzel az azonosítóval együtt bélyegozza a kivételt.

    Feljegyzés

    A SnapshotsPerTenMinutesLimit beállítás korlátozza a pillanatképek létrehozásának sebességét. Alapértelmezés szerint a korlát 10 percenként egy pillanatkép.

  6. A kezelő visszatérése FirstChanceException után az alkalmazás a szokásos módon dolgozza fel a kidobott kivételt.

  7. A kivétel ismét eléri a TrackException metódust, amely az Application Insightsnak jelenti a pillanatkép-azonosítóval együtt.

Feljegyzés

Állítsa a(z) IsEnabledInDeveloperMode elemet true értékre, hogy pillanatképeket hozzon létre, miközben a Visual Studióban hibakeresést végez.

Pillanatkép-feltöltő folyamat

Bár a Snapshot Debugger folyamat továbbra is fut, és kis megszakítással kiszolgálja a felhasználók felé irányuló forgalmat, a pillanatképet átadja a Pillanatkép-feltöltő folyamatnak. Egy tipikus forgatókönyvben a pillanatkép-feltöltő:

  1. Létrehoz egy minidumpot.

  2. Feltölti a minidumpot az Application Insightsba, a megfelelő szimbólumfájlokkal (.pdb) együtt.

Feljegyzés

A Pillanatkép-feltöltő legfeljebb 50 pillanatképet tölthet fel naponta.

Ha engedélyezte a Pillanatkép-hibakeresőt, de nem lát pillanatképeket, tekintse meg a hibaelhárítási útmutatót.

Frissítse a Pillanatkép-hibakeresőt

A Pillanatkép-hibakereső automatikusan frissül a beépített, előre telepített Application Insights-webhelybővítmény használatával.

A Snapshot Debugger naprakészen tartásához az Application Insights webhelybővítmény manuális hozzáadása elavulttá vált.

Pillanatkép-hibakeresés többletterhelése

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:

  • Amikor az alkalmazás kivételt jelez
  • Ha a kivételkezelő úgy dönt, hogy pillanatképet hoz létre
  • Mikor TrackException van meghívva

A Pillanatkép-hibakereső által rögzített adatok tárolásának nincs további költsége .

Tekintse meg azokat a példaforgatókönyveket, amelyekben a Snapshot Debugger többletterhelését tapasztalhatja.

Kódoptimalizálások

Ha a Snapshot Debugger pillanatképeket gyűjt az alkalmazásból, a kapcsolódó kivételelemzések megjelenhetnek a Kódoptimalizálások összesített áttekintésében.

A Snapshot Debugger korlátozásai

A Pillanatkép-hibakeresőre az alábbi korlátozások vonatkoznak:

  • 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. Az érték növeléséhez nyisson meg egy támogatási esetet a Azure portálon. Minden Application Insights-példány naponta legfeljebb 50 pillanatképet engedélyez.

  • Szimbólumok közzététele

    A Pillanatkép-hibakeresőhöz szimbólumfájlok szükségesek az éles kiszolgálón az alábbi funkciókhoz:

    • Változók dekódolása
    • A hibakeresési élmény biztosítása a Visual Studio-ban.

    Alapértelmezés szerint a Visual Studio 2017 15.2-es vagy újabb verziója a kiadási buildek szimbólumait teszi közzé, amikor közzéteszi az App Service-ben.

    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>
    

    A 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ában wwwroot/bin), vagy
    • Elérhető az aktuális útvonalon.

    Az elérhető 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 használja a Teljes, a Hordozható vagy a Beágyazott lehetőséget.

  • Optimalizált buildek

    Bizonyos esetekben nem tekintheti meg a helyi változókat a kiadási buildekben, mert a JIT-fordító optimalizálást alkalmaz.

    App Service azonban a Snapshot Debugger optimalizálhatja 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ányába, hogy elérje a deoptimalizálás támogatását.

Az Application Insights Snapshot Debugger engedélyezése az alkalmazáshoz: