Ladicí snímky pro výjimky v aplikacích .NET

Pokud dojde k výjimce, můžete automaticky shromáždit snímek ladění z živé webové aplikace. Snímek zobrazuje stav zdrojového kódu a proměnných v okamžiku, kdy byla vyvolána výjimka. Snapshot Debugger v Azure Application Insights monitorují telemetrii výjimek z vaší webové aplikace. Shromažďuje snímky na vašich vyvolané výjimce, takže budete mít k dispozici informace potřebné k diagnostice problémů v produkčním prostředí. zahrňte do aplikace balíček kolekce snímků NuGet a volitelně nakonfigurujte parametry kolekce v ApplicationInsights.config. snímky se zobrazí na výjimkách na portálu Application Insights.

Snímky ladění můžete zobrazit na portálu a podívat se do zásobníku volání a zkontrolovat proměnné v každém rámci zásobníku volání. chcete-li získat výkonnější možnosti ladění pomocí zdrojového kódu, otevřete snímky s Visual Studio 2019 Enterprise. v Visual Studio můžete také nastavit snímkovací body pro interaktivní pořizování snímků bez čekání na výjimku.

Snímky ladění se ukládají po dobu 15 dnů. Tyto zásady uchovávání informací se nastavují na základě jednotlivých aplikací. Pokud potřebujete tuto hodnotu zvýšit, můžete požádat o zvýšení otevřením případu podpory v Azure Portal.

povolit pro aplikaci Application Insights Snapshot Debugger

Kolekce snímků je k dispozici pro:

  • .NET Framework a ASP.NET aplikace se systémem .NET Framework 4,5 nebo novějším.
  • aplikace .net core a ASP.NET Core se systémem .net core 2,1 (LTS) nebo 3,1 (LTS) v Windows.
  • Aplikace .NET 5,0 na Windows.

Nedoporučujeme používat .NET Core 2,0, 2,2 nebo 3,0, protože nepodporují.

Podporují se následující prostředí:

Poznámka

klientské aplikace (například WPF, model Windows Forms nebo UWP) nejsou podporovány.

Pokud jste povolili Snapshot Debugger, ale nevidíte snímky, podívejte se na naši příručku pro řešení potíží.

Udělení oprávnění

Přístup k snímkům je chráněn řízením přístupu na základě role Azure (Azure RBAC). Abyste mohli prozkoumat snímek, vlastník předplatného vás nejprve musí přidat do potřebné role.

Poznámka

Vlastníci a přispěvatelé tuto roli automaticky nemají. Pokud chtějí snímky zobrazit, musí se do této role přidat sami.

Vlastníci předplatného by měli přiřadit Application Insights Snapshot Debugger roli uživatelům, kteří budou kontrolovat snímky. tato role se dá přiřadit jednotlivým uživatelům nebo skupinám podle vlastníků předplatného pro cílový Application Insights prostředek nebo jeho skupinu prostředků nebo předplatné.

  1. v Azure Portal přejděte na prostředek Application Insights.
  2. Klikněte na Řízení přístupu (IAM).
  3. Klikněte na tlačítko + Přidat přiřazení role .
  4. v rozevíracím seznamu role vyberte Application Insights Snapshot Debugger .
  5. Vyhledejte a zadejte jméno uživatele, kterého chcete přidat.
  6. Kliknutím na tlačítko Uložit přidáte uživatele do role.

Důležité

Všimněte si, že snímky mohou obsahovat osobní údaje nebo jiné citlivé informace v hodnotách proměnných a parametrů. data snímku se ukládají ve stejné oblasti jako aplikace Přehledy prostředku.

Zobrazení snímků na portálu

Po výskytu výjimky v aplikaci a vytvoření snímku byste měli mít snímky k zobrazení. Výjimka může trvat 5 až 10 minut, než se dostanou do snímku připraveného a zobrazit na portálu. Chcete-li zobrazit snímky, vyberte v podokně selhání tlačítko operace při zobrazení karty operace , nebo při zobrazení karty výjimky vyberte tlačítko výjimky :

Stránka selhání

V pravém podokně vyberte operaci nebo výjimku, čímž otevřete podokno podrobnosti transakce , a pak vyberte událost výjimky. Pokud je pro danou výjimku k dispozici snímek, v pravém podokně se zobrazí tlačítko otevřít snímek ladění s podrobnostmi o výjimce.

Otevřít tlačítko pro vytvoření snímku ladění na výjimce

V zobrazení snímku ladění se zobrazí zásobník volání a podokno proměnné. Když vyberete rámce zásobníku volání v podokně zásobník volání, můžete zobrazit místní proměnné a parametry pro volání funkce v podokně proměnné.

Zobrazit snímek ladění na portálu

Snímky můžou obsahovat citlivé informace a ve výchozím nastavení nejsou dostupné. Chcete-li zobrazit snímky, musíte mít Application Insights Snapshot Debugger přiřazenou roli.

zobrazit snímky v Visual Studio 2017 Enterprise nebo vyšší

  1. Klikněte na tlačítko Stáhnout snímek a stáhněte .diagsession soubor, který může být otevřen Visual Studio Enterprise.

  2. pokud chcete .diagsession soubor otevřít, musíte mít nainstalovanou součást Snapshot Debugger Visual Studio. součást Snapshot Debugger je požadovaná součást úlohy ASP.NET v Visual Studio a je možné ji vybrat ze seznamu jednotlivých komponent v instalačním programu Visual Studio. pokud používáte verzi Visual Studio před Visual Studio 2017 verze 15,5, bude nutné nainstalovat rozšíření z webu Visual Studio Marketplace.

  3. po otevření souboru snímku se zobrazí stránka ladění s minimálním výpisem v Visual Studio. Kliknutím na ladění spravovaného kódu spusťte ladění snímku. Snímek se otevře na řádku kódu, kde byla vyvolána výjimka, aby bylo možné ladit aktuální stav procesu.

    Zobrazit snímek ladění v Visual Studio

Stažený snímek obsahuje všechny soubory symbolů, které byly nalezeny na vašem serveru webové aplikace. Tyto soubory symbolů jsou vyžadovány pro přidružení dat snímků ke zdrojovému kódu. Pro App Service aplikace Nezapomeňte povolit nasazení symbolů při publikování webových aplikací.

Jak fungují snímky

Snapshot Collector se implementuje jako procesor Telemetrie Application Insights. Po spuštění aplikace se do kanálu telemetrie vaší aplikace přidá procesor telemetrie Snapshot Collector. Pokaždé, když vaše aplikace volá TrackException, Snapshot COLLECTOR vypočítá ID problému z typu vyvolané výjimky a metody throw. Pokaždé, když vaše aplikace volá TrackException, se pro příslušné ID problému zvýší hodnota čítače. Když čítač dosáhne ThresholdForSnapshotting hodnoty, ID problému se přidá do plánu kolekce.

Snapshot Collector také monitoruje výjimky, když jsou vyvolány přihlášením k odběru události AppDomain. CurrentDomain. FirstChanceException . Když se tato událost aktivuje, vypočítává se ID problému výjimky a porovná se s ID problémů v plánu shromažďování. Pokud se zobrazí shoda, vytvoří se snímek běžícího procesu. Snímku je přiřazen jedinečný identifikátor a tato výjimka je opatřena tímto identifikátorem. Po návratu obslužné rutiny FirstChanceException je vyvolána výjimka zpracována jako normální. nakonec výjimka dosáhne TrackException metody znovu tam, kde je, společně s identifikátorem snímku, je hlášena Application Insights.

Hlavní proces pokračuje v běhu a obsluhuje přenosy pro uživatele s malým přerušením. Mezitím se snímek předává procesu odeslání snímku. odeslání snímku odešle s minimálním výpisem a nahraje ho, aby Application Insights společně se všemi relevantními soubory symbolů (. pdb).

Tip

  • Snímek procesu je pozastavený klon spuštěného procesu.
  • Vytváření snímku trvá přibližně 10 až 20 milisekund.
  • Výchozí hodnota pro ThresholdForSnapshotting je 1. To je také minimální hodnota. Proto musí vaše aplikace aktivovat stejnou výjimku dvakrát před vytvořením snímku.
  • Nastavte IsEnabledInDeveloperMode na hodnotu true, pokud chcete generovat snímky při ladění v Visual Studio.
  • Frekvence vytváření snímků je omezená SnapshotsPerTenMinutesLimit nastavením. Ve výchozím nastavení je limit jeden snímek každých deset minut.
  • Nelze nahrávat více než 50 snímků za den.

Omezení

Výchozí doba uchovávání dat je 15 dní. pro každou instanci Application Insights je povolený maximální počet 50 snímků za den.

Publikovat symboly

Snapshot Debugger vyžaduje, aby soubory symbolů na provozním serveru dekódují proměnné a poskytovaly prostředí ladění v Visual Studio. verze 15,2 (nebo vyšší) Visual Studio 2017 publikuje symboly pro sestavení vydaných verzí ve výchozím nastavení, když je publikuje do App Service. V předchozích verzích musíte do souboru publikačního profilu přidat následující řádek, .pubxml aby se symboly publikovaly v režimu vydání:

    <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>

V případě výpočtů a dalších typů Azure se ujistěte, že jsou soubory symbolů ve stejné složce hlavní aplikace .dll (obvykle wwwroot/bin ) nebo jsou k dispozici na aktuální cestě.

Poznámka

další informace o různých možnostech symbolů, které jsou k dispozici, najdete v dokumentaci k Visual Studio. Pro dosažení nejlepších výsledků doporučujeme použít "úplné", "přenosné" nebo "vložené".

Optimalizovaná sestavení

V některých případech nelze místní proměnné zobrazit v sestaveních vydaných verzí z důvodu optimalizace, které jsou aplikovány kompilátorem JIT. V Azure App Services však Snapshot Collector může deoptimalizovat vyvolání metod, které jsou součástí plánu shromažďování dat.

Tip

pokud chcete získat podporu deoptimalizace, nainstalujte do App Service rozšíření Application Insights lokality.

Další kroky

povolit pro aplikaci Application Insights Snapshot Debugger:

nad Application Insights Snapshot Debugger: