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í:
- Azure App Service
- Funkce Azure Functions
- Azure Cloud Services s operačním systémem 4 nebo novějším.
- služby Azure Service Fabric spuštěné v Windows Server 2012 R2 nebo novějším
- Azure Virtual Machines a škálování sady virtuálních počítačů se systémem Windows Server 2012 R2 nebo novějším
- místní virtuální nebo fyzické počítače se systémem Windows Server 2012 R2 nebo novějším nebo Windows 8.1 nebo novějším
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é.
- v Azure Portal přejděte na prostředek Application Insights.
- Klikněte na Řízení přístupu (IAM).
- Klikněte na tlačítko + Přidat přiřazení role .
- v rozevíracím seznamu role vyberte Application Insights Snapshot Debugger .
- Vyhledejte a zadejte jméno uživatele, kterého chcete přidat.
- 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 :

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.

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

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šší
Klikněte na tlačítko Stáhnout snímek a stáhněte
.diagsessionsoubor, který může být otevřen Visual Studio Enterprise.pokud chcete
.diagsessionsoubor 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.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.

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
ThresholdForSnapshottingje 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
IsEnabledInDeveloperModena hodnotu true, pokud chcete generovat snímky při ladění v Visual Studio. - Frekvence vytváření snímků je omezená
SnapshotsPerTenMinutesLimitnastavení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:
- Azure App Service
- Funkce Azure Functions
- Azure Cloud Services
- služby Azure Service Fabric
- Azure Virtual Machines a Virtual Machine Scale Sets
- Místní virtuální nebo fyzické počítače
nad Application Insights Snapshot Debugger:
- Nastavte snímkovací body v kódu pro získání snímků bez čekání na výjimku.
- diagnostika výjimek ve vašich webových aplikacích vysvětluje, jak je možné Application Insights zobrazit další výjimky.
- Inteligentní zjišťování automaticky zjišťuje anomálie výkonu.