Megosztás a következőn keresztül:


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:

Környezetek

A következő környezetek támogatottak:

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

Engedélyek

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:

  1. Az alkalmazás eldobja a TrackException.

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

  3. 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.

  4. 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.

  5. 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.

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

  7. 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ő:

  1. Létrehoz egy minidumpot.

  2. 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.

Tekintse meg azokat a példaforgatókönyveket, amelyekben pillanatkép-hibakereső többletterhelést tapasztalhat.

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ában wwwroot/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: