Sdílet prostřednictvím


Ladění výjimek v aplikacích .NET pomocí nástroje Snapshot Debugger

Pokud je tato možnost povolená, Snapshot Debugger automaticky pořizuje snímek ladění zdrojového kódu a proměnných, kdykoli dojde k výjimce v živé aplikaci .NET. Snapshot Debugger ve Application Insights:

  • Monitoruje systémově generované protokoly z vaší aplikace pro web.
  • Shromažďuje snímky nejčastěji vyvolávaných výjimek.
  • 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í

Aplikace

Kolekce snímků je dostupná pro:

Prostředí

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

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

Oprávnění

Jak funguje Snapshot Debugger

Snapshot Debugger je implementován jako zpracovatel 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ímku 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, tak aby uživatelé zaznamenali minimální nebo žádné přerušení. V typickém scénáři:

  1. Aplikace vyvolá TrackException.

  2. Snapshot Debugger monitoruje výjimky, když jsou vyvolány přihlášením k odběru události AppDomain.CurrentDomain.FirstChanceException.

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

  4. ID problému události výjimky se vypočítá a porovná s ID problémů v plánu sběru.

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

  6. Po návratu obslužné FirstChanceException rutiny je vyvolaná výjimka zpracována jako obvykle.

  7. 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 na true, pokud chcete při ladění v aplikaci Visual Studio generovat snímky.

Proces nahrání snímku

I když proces Snapshot Debugger nadále běží a obsluhuje provoz uživatelů s minimálním přerušením, snímek je předán procesu nahrávače snímků. V typickém scénáři nástroj Snapshot Uploader:

  1. Vytvoří minidump.

  2. 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édněte si průvodce odstraňováním potíží.

Upgradování 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 k udržení Snapshot Debuggeru aktuálním 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 zátěž na procesor, paměť a vstupně-výstupní operace spojenou 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 obrazovky
  • Když je TrackException 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 pojednává o omezeních pro ladění 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
    • Poskytnout ladicí prostředí ve 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 svého publikačního profilu .pubxml 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 (obvykle wwwroot/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.

    Návod

    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: