A .NET-alkalmazások kivételeinek hibakeresési pillanatképei

Kivétel esetén automatikusan gyűjthet hibakeresési pillanatképet az élő webalkalmazásból. A pillanatkép a forráskód és a változók állapotát mutatja a kivétel eldobásának pillanatában. Az Snapshot Debugger Azure Application Insights monitorozza a webalkalmazásból származó kivétel-telemetriát. Pillanatképeket gyűjt a legtetszethető kivételekről, így Ön az éles környezetben diagnosztizálhatja a problémákat. Foglalja bele a Pillanatkép-gyűjtő NuGet-csomagját az alkalmazásba, és opcionálisan konfigurálja a gyűjtemény paramétereit a ApplicationInsights.config. A pillanatképek a Application Insights kivételeken jelennek meg.

A portálon a hibakeresési pillanatfelvételeket megtekintve láthatja a hívásvermet és megvizsgálhatja a változókat az egyes hívásveremkeretekre vonatkozóan. A forráskód hatékonyabb hibakeresési élményének érdekében a 2019 Enterprise Visual Studio pillanatképeket nyithat meg. A Visual Studio a Beépülő modulokat is beállíthatja úgy, hogy kivételre való várakozás nélkül készítsenek interaktív pillanatképeket.

A hibakeresési pillanatképek 15 napig vannak tárolva. Ez a megőrzési szabályzat alkalmazásonként van beállítva. Ha növelnie kell ezt az értéket, a támogatási eset megnyitásával kérheti a Azure Portal.

Alkalmazások Application Insights Snapshot Debugger engedélyezése

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

  • .NET-keretrendszer 4.5-ös ASP.NET vagy újabb .NET-keretrendszer futó alkalmazásokhoz.
  • .NET Core és ASP.NET .NET Core 2.1 (LTS) vagy 3.1 (LTS) rendszert futtató Core-alkalmazások Windows rendszeren.
  • .NET 5.0-alkalmazások Windows rendszeren.

Nem javasoljuk a .NET Core 2.0, 2.2 vagy 3.0 használatát, mivel ezek nincsenek támogatva.

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

  • Azure App Service
  • Azure-függvény
  • Azure Cloud Services 4-es vagy újabb operációsrendszer-család futtatása
  • Windows Server 2012 R2 vagy újabb rendszeren futó Azure Service Fabric-szolgáltatások
  • Windows Server 2012 R2 vagy újabb rendszert futtató Azure Virtual Machines- és virtuálisgép-méretezési készletek
  • Windows Server 2012 R2 vagy újabb, illetve Windows 8.1 vagy újabb rendszert futtató helyszíni virtuális vagy fizikai gépek

Megjegyzés

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

Ha engedélyezte a Snapshot Debugger de nem lát pillanatképeket, tekintse meg a hibaelhárítási útmutatót.

Engedélyek megadása

A pillanatképek hozzáférését az Azure szerepköralapú hozzáférés-vezérlése (Azure RBAC) védi. A pillanatképek vizsgálatához egy előfizetés-tulajdonosnak először fel kell vennie Önt a szükséges szerepkörbe.

Megjegyzés

A tulajdonosok és a közreműködők nem kapják meg automatikusan ezt a szerepkört. Ha meg szeretnék tekinteni a pillanatképeket, hozzá kell adni magukat a szerepkörhöz.

Az előfizetés tulajdonosainak hozzá kell rendelniük Application Insights Snapshot Debugger a szerepkört olyan felhasználókhoz, akik meg fogják vizsgálni a pillanatképeket. Ezt a szerepkört az előfizetés tulajdonosa hozzárendelheti egyéni felhasználókhoz vagy csoportokhoz a célként Application Insights erőforráshoz, annak erőforráscsoporthoz vagy előfizetéshez.

  1. Keresse meg Application Insights erőforrást a Azure Portal.
  2. Kattintson a Hozzáférés-vezérlés (IAM) elemre.
  3. Kattintson a +Szerepkör-hozzárendelés hozzáadása gombra.
  4. Válassza Application Insights Snapshot Debugger a Szerepkörök legördülő listában.
  5. Keresse meg és adja meg a felhasználó hozzáadni nevét.
  6. Kattintson a Mentés gombra a felhasználó szerepkörhöz való hozzáadásához.

Fontos

Vegye figyelembe, hogy a pillanatképek személyes adatokat vagy más bizalmas adatokat tartalmazhatnak változó- és paraméterértékek között. A pillanatkép-adatokat a rendszer ugyanabban a régióban tárolja, mint az App Insights-erőforrást.

Pillanatképek megtekintése a portálon

Miután kivétel történt az alkalmazásban, és létrejött egy pillanatkép, pillanatképeket kell készítenie a megtekintéshez. A kivétel bekövetkeztét 5–10 percet is igénybe vehet a portálon egy pillanatképre kész és megtekinthető pillanatfelvételig. A pillanatképek megtekintéséhez a Hibák panelen válassza a Műveletek gombot a Műveletek lap megtekintésekor, vagy a Kivételek gombot a Kivételek lap megtekintésekor:

Hibák oldal

Válasszon ki egy műveletet vagy kivételt a jobb oldali panelen a Végpontok között tranzakció részletei panel megnyitásához, majd válassza ki a kivételeseményt. Ha egy pillanatkép elérhető az adott kivételhez, a jobb oldali panelen megjelenik egy Hibakeresési pillanatkép megnyitása gomb, amely a kivétel részleteit tartalmazza.

Hibakeresési pillanatkép gomb megnyitása kivételhez

A Hibakeresési pillanatkép nézetben egy hívási verem és egy változók panel látható. Amikor kiválasztja a hívási verem képkockáit a hívási verem panelen, a változók panelen megtekintheti a függvényhívás helyi változóit és paramétereit.

Hibakeresési pillanatkép megtekintése a portálon

A pillanatképek tartalmazhatnak bizalmas adatokat, és alapértelmezés szerint nem hetők meg. A pillanatképek megtekintéséhez önnek kell Application Insights Snapshot Debugger hozzárendelnie a szerepkört.

Pillanatképek megtekintése Visual Studio 2017 Enterprise-ban vagy annak felett

  1. Kattintson a Pillanatkép letöltése gombra egy olyan fájl letöltéséhez, amelyet a .diagsession Visual Studio nyithat meg.

  2. A fájl megnyitásához telepítenie kell a Snapshot Debugger Visual Studio .diagsession összetevőt. A Snapshot Debugger összetevő a ASP.net számítási feladatának szükséges összetevője Visual Studio és kiválasztható a Visual Studio-telepítő Egyéni összetevők listájából. Ha a Visual Studio 2017 15.5-ös Visual Studio előtti verzióját használja, telepítenie kell a bővítményt a Visual Studio Marketplace-ről.

  3. A pillanatképfájl megnyitása után megjelenik a Minidump hibakeresési oldal Visual Studio lapon. Kattintson a Felügyelt kód hibakeresése elemre a pillanatkép hibakeresésének elkezdésén. A pillanatkép megnyitja azt a kódsort, ahol a kivétel történt, így hibakeresést lehet végezni a folyamat aktuális állapotán.

    Hibakeresési pillanatkép megtekintése a Visual Studio

A letöltött pillanatkép tartalmazza a webalkalmazás-kiszolgálón talált szimbólumfájlokat. Ezek a szimbólumfájlok szükségesek ahhoz, hogy pillanatkép-adatokat társítsunk a forráskódhoz. A App Service engedélyezze a szimbólumok üzembe helyezését a webalkalmazások közzétételekor.

A pillanatképek készítése

A Snapshot Collector egy Application Insights Telemetria van megvalósítva. Az alkalmazás futtatásakor a Snapshot Collector telemetriai processzor hozzá lesz adva az alkalmazás telemetriai folyamatához. Minden alkalommal, amikor az alkalmazás a TrackExceptionmetódust hívja meg, a Snapshot Collector kiszámítja a probléma azonosítóját a kivétel típusától és a dobó metódustól. Minden alkalommal, amikor az alkalmazás a TrackException hívását hívja, egy számláló növekszik a megfelelő problémaazonosítóhoz. Amikor a számláló eléri az értéket, a rendszer ThresholdForSnapshotting hozzáadja a problémaazonosítót egy gyűjteménytervhez.

A Snapshot Collector az AppDomain.CurrentDomain.FirstChanceException eseményre való feliratkozás során a kivételeket is figyeli. Amikor ez az esemény begyakorlott, a rendszer kiszámítja a kivétel problémaazonosítóját, és összehasonlítja a gyűjteménytervben a problémaazonosítóval. Ha van egyezés, a rendszer pillanatképet készít a futó folyamatról. A pillanatképhez egy egyedi azonosító van hozzárendelve, a kivétel pedig ezzel az azonosítóval van megbélyegzve. A FirstChanceException kezelő visszatérése után a kivétel a szokásos módon lesz feldolgozva. Végül a kivétel ismét eléri a TrackException metódust, ahol a pillanatkép-azonosítóval együtt a rendszer jelenti a Application Insights.

A fő folyamat továbbra is kis megszakítással fut és szolgálja ki a forgalmat a felhasználóknak. Eközben a pillanatképet a pillanatkép-feltöltő folyamatnak adjuk át. A Snapshot Uploader létrehoz egy minimumpot, és feltölti Application Insights a megfelelő szimbólumfájlokkal (.pdb) együtt.

Tipp

  • A folyamat-pillanatkép a futó folyamat felfüggesztett klónja.
  • A pillanatkép létrehozása körülbelül 10–20 ezredmásodpercet vesz igénybe.
  • A alapértelmezett értéke ThresholdForSnapshotting 1. Ez a minimális érték is. Ezért az alkalmazásnak kétszer kell aktiválni ugyanazt a kivételt a pillanatkép létrehozása előtt.
  • Állítsa IsEnabledInDeveloperMode true (igaz) értékre, ha pillanatképeket szeretne létrehozni a hibakeresés közben a Visual Studio.
  • A pillanatképek létrehozásának sebességét a beállítás SnapshotsPerTenMinutesLimit korlátozza. Alapértelmezés szerint a korlát tíz percenként egy pillanatkép.
  • Naponta csak 50 pillanatképet lehet feltölteni.

Korlátozások

Az alapértelmezett adatmegőrzési időtartam 15 nap. Minden Application Insights legfeljebb 50 pillanatkép engedélyezett naponta.

Szimbólumok közzététele

A Snapshot Debugger a szimbólumfájlokra van szükség az éles kiszolgálón a változók dekódolása és a hibakeresési folyamat Visual Studio. A 2017-es Visual Studio 15.2-es (vagy újabb) verziója alapértelmezés szerint közzétesz szimbólumokat a kiadási buildek számára, amikor App Service. A korábbi verziókban hozzá kell adni a következő sort a közzétételi profilfájlhoz, hogy a szimbólumok kiadási módban is közzé tudja .pubxml tenni őket:

    <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 főalkalmazás .dll fájljának (általában ) mappájában találhatók, vagy az aktuális elérési úton wwwroot/bin érhetők el.

Megjegyzés

A különböző elérhető szimbólumokkal kapcsolatos további információkért tekintse meg a Visual Studio dokumentációját. A legjobb eredmény érdekében javasoljuk a "Full", "Portable" vagy "Embedded" használatát.

Optimalizált buildek

Bizonyos esetekben a helyi változók a JIT-fordító által alkalmazott optimalizálások miatt nem megtekinthetők a kiadási buildek során. Az Azure App Services azonban a Snapshot Collector a gyűjteményterv részét Snapshot Collector eldobó metódusokat.

Tipp

Telepítse a Application Insights helybővítményt a App Service a deoptimalizálás támogatásához.

Következő lépések

Engedélyezze Application Insights Snapshot Debugger az alkalmazáshoz:

A Application Insights Snapshot Debugger: