Ladění výjimek v aplikacích .NET pomocí nástroje Snapshot Debugger
Pokud je tato možnost povolená, snapshot Debugger automaticky shromažďuje snímek ladění zdrojového kódu a proměnných, když dojde k výjimce v živé aplikaci .NET. Snapshot Debugger v Application Insights:
- Monitoruje systémem generované protokoly z vaší webové aplikace.
- Shromažďuje snímky v horních výjimkách.
- Poskytuje informace, které potřebujete k diagnostice problémů v produkčním prostředí.
Přečtěte si další informace o procesech Snapshot Debugger a Snapshot Uploader.
Podporované aplikace a prostředí
Tato část obsahuje seznam podporovaných aplikací a prostředí.
Aplikace
Kolekce snímků je dostupná pro:
- .NET Framework 4.6.2 a novější verze.
- .NET 6.0 nebo novější ve Windows.
Prostředí
Podporují se následující prostředí:
- Azure App Service
- Azure Functions
- Azure Cloud Services se systémem OS family 4 nebo novějším
- Azure Service Fabric běžící na Windows Serveru 2012 R2 nebo novějším
- Azure Virtual Machines a Azure Virtual Machine Scale Sets s Windows Serverem 2012 R2 nebo novějším
- Místní virtuální nebo fyzické počítače s Windows Serverem 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 UPW) se nepodporují.
Požadavky pro použití nástroje Snapshot Debugger
Balíčky a konfigurace
- Do své aplikace zahrňte balíček NuGet Snapshot Collectoru.
- Konfigurace parametrů kolekce v souboru
ApplicationInsights.config
.
Oprávnění
- Ověřte, že jste přidaní do role Ladicího programu snímků Application Insights pro cílový snímek Application Insights.
Jak funguje Snapshot Debugger
Snapshot Debugger se implementuje jako procesor telemetrie Application Insights. Po spuštění aplikace se do kanálu protokolů vygenerovaných systémem vaší aplikace přidá procesor telemetrie snapshot Debuggeru.
Důležité
Snímky můžou obsahovat osobní údaje nebo jiné citlivé informace v hodnotách proměnných a parametrů. Data snímků se ukládají ve stejné oblasti jako prostředek Application Insights.
Proces snapshot Debugger
Proces Snapshot Debugger se spustí a končí metodou TrackException
. Snímek procesu je pozastavený klon spuštěného procesu, aby vaši uživatelé neměli žádné přerušení. V typickém scénáři:
Aplikace vyvolá
TrackException
výjimku .Snapshot Debugger monitoruje výjimky, protože jsou vyvolány přihlášením k odběru
AppDomain.CurrentDomain.FirstChanceException
události.Pro ID problému se zvýší čítač.
- Když čítač dosáhne
ThresholdForSnapshotting
hodnoty, ID problému se přidá do plánu kolekce.
Poznámka:
Výchozí
ThresholdForSnapshotting
minimální hodnota je 1. S touto hodnotou musí vaše aplikace před vytvořením snímku aktivovat stejnou výjimku dvakrát .- Když čítač dosáhne
ID problému události výjimky se vypočítá a porovná s ID problémů v plánu kolekce.
Pokud existuje shoda mezi ID problémů, vytvoří se snímek spuštěného procesu.
- Snímek má přiřazen jedinečný identifikátor a výjimka je označena tímto identifikátorem.
Poznámka:
Rychlost vytváření snímků je omezená
SnapshotsPerTenMinutesLimit
nastavením. Ve výchozím nastavení je limitem jeden snímek každých 10 minut.Po návratu obslužné
FirstChanceException
rutiny je vyvoláná výjimka zpracována jako normální.Výjimka znovu dosáhne
TrackException
metody a je hlášena službě Application Insights spolu s identifikátorem snímku.
Poznámka:
Nastavte IsEnabledInDeveloperMode
, true
pokud chcete při ladění v sadě Visual Studio generovat snímky.
Proces nahrání snímku
I když proces Snapshot Debugger nadále běží a obsluhuje provoz uživatelům s malým přerušením, snímek se předá procesu Nahrávání snímků. V typickém scénáři nástroj Snapshot Uploader:
Vytvoří minidump.
Nahraje minidump do Application Insights spolu se všemi relevantními soubory symbolu (.pdb).
Poznámka:
Nelze nahrát více než 50 snímků za den.
Pokud jste povolili Ladicí program snímků, ale nezobrazují se vám snímky, prohlédni si průvodce odstraňováním potíží.
Upgrade ladicího programu snímků
Snapshot Debugger se automaticky upgraduje prostřednictvím integrovaného předinstalovaného rozšíření webu Application Insights.
Ruční přidání rozšíření webu Application Insights, aby byl snapshot Debugger aktuální, je zastaralý.
Režijní náklady
Snapshot Debugger je navržený pro použití v produkčních prostředích. Výchozí nastavení zahrnují omezení rychlosti, která minimalizují dopad na vaše aplikace.
Můžete ale zaznamenat malou režii procesoru, paměti a vstupně-výstupních operací spojených s ladicím programem Snapshot Debugger, například:
- Při vyvolání výjimky v aplikaci
- Pokud se obslužná rutina výjimky rozhodne vytvořit snímek
- Kdy
TrackException
je volána
Za ukládání dat zachycených nástrojem Snapshot Debugger nejsou žádné další náklady .
Podívejte se na ukázkové scénáře, ve kterých můžete zaznamenat režii programu Snapshot Debugger.
Omezení
Tato část popisuje omezení pro ladicí program snímků.
Uchovávání dat
Snímky ladění se ukládají po dobu 15 dnů. Výchozí zásady uchovávání dat se nastavily pro jednotlivé aplikace. Pokud potřebujete tuto hodnotu zvýšit, můžete požádat o navýšení otevřením případu podpory na webu Azure Portal. Pro každou instanci Application Insights je povolený maximální počet 50 snímků za den.
Publikování symbolů
Snapshot Debugger vyžaduje soubory symbolů na produkčním serveru, aby:
- Dekódování proměnných
- Poskytnutí prostředí ladění v sadě Visual Studio
Visual Studio 2017 verze 15.2+ ve výchozím nastavení publikuje symboly pro sestavení vydaných verzí při publikování do služby App Service.
V předchozích verzích musíte do souboru profilu
.pubxml
publikování přidat následující řádek, aby se symboly publikovaly v režimu vydání:<ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
Pro Azure Compute a další typy se ujistěte, že soubory symbolů jsou:
- Ve stejné složce hlavní aplikace
.dll
(obvyklewwwroot/bin
) nebo - K dispozici v aktuální cestě.
Další informace o různých dostupných možnostech symbolů najdete v dokumentaci k sadě Visual Studio. Nejlepších výsledků dosáhnete, když použijete Full, Portable nebo Embedded.
Optimalizované buildy
V některých případech se místní proměnné nedají zobrazit v buildech vydaných verzí kvůli optimalizacím použitým kompilátorem JIT.
Ve službě App Service však může ladicí program snímků deoptimalizovat metody vyvolání metod, které jsou součástí plánu kolekce.
Tip
Nainstalujte rozšíření webu Application Insights ve vaší instanci služby App Service, abyste získali podporu deoptimalizace.
Další kroky
Povolte pro vaši aplikaci Ladicí program snímků Application Insights: