Udostępnij za pośrednictwem


Debugowanie wyjątków w aplikacjach platformy .NET przy użyciu narzędzia Snapshot Debugger

Po włączeniu narzędzie Snapshot Debugger automatycznie zbiera migawkę debugowania kodu źródłowego i zmiennych, gdy wystąpi wyjątek w aktywnej aplikacji .NET. Debuger migawek w usłudze Application Insights:

  • Monitoruje dzienniki generowane przez system z poziomu aplikacji internetowej.
  • Zbiera migawki dotyczące najwyższych wyjątków.
  • Zawiera informacje potrzebne do diagnozowania problemów w środowisku produkcyjnym.

Dowiedz się więcej na temat procesów Snapshot Debugger i Snapshot Uploader.

Obsługiwane aplikacje i środowiska

Aplikacje

Kolekcja migawek jest dostępna dla:

Środowiska

Obsługiwane są następujące środowiska:

Uwaga

Aplikacje klienckie (na przykład WPF, Windows Forms lub UWP) nie są obsługiwane.

Wymagania wstępne dotyczące korzystania z debugera migawek

Pakiety i konfiguracje

Uprawnienia

  • Sprawdź, czy jesteś dodany do roli Debuggera migawki usługi Application Insights dla docelowej migawki usługi Application Insights.

Jak działa debuger migawek

Debuger migawkowy jest implementowany jako procesor telemetrii Application Insights. Po uruchomieniu aplikacji procesor telemetrii Snapshot Debugger zostaje dodany do potoku dzienników generowanych przez aplikację w systemie.

Ważne

Migawki mogą zawierać dane osobowe lub inne poufne informacje w wartościach zmiennych i parametrów. Dane migawek są przechowywane w tym samym regionie co zasób usługi Application Insights.

Proces debugowania migawkowego

Proces debugera migawek rozpoczyna się i kończy się TrackException metodą . Migawka procesu jest wstrzymanym klonem uruchomionego procesu, dzięki czemu użytkownicy nie mają żadnych przerw w działaniu. W typowym scenariuszu:

  1. Aplikacja zgłasza błąd TrackException.

  2. Debuger migawek monitoruje wyjątki w miarę ich zgłaszania przez subskrybowanie zdarzenia AppDomain.CurrentDomain.FirstChanceException .

  3. Licznik jest zwiększany dla identyfikatora problemu.

    • Gdy licznik osiągnie wartość ThresholdForSnapshotting, identyfikator problemu zostanie dodany do planu zbierania.

    Uwaga

    Domyślna wartość minimalna ThresholdForSnapshotting to 1. Przy użyciu tej wartości aplikacja musi wyzwolić ten sam wyjątek dwa razy przed utworzeniem migawki.

  4. Identyfikator problemu zdarzenia wyjątku jest obliczany i porównywany z identyfikatorami problemów w planie zbierania danych.

  5. Jeśli istnieje dopasowanie między identyfikatorami problemów, zostanie utworzona migawka uruchomionego procesu.

    • Migawka ma przypisany unikalny identyfikator, a wyjątek jest oznaczany tym identyfikatorem.

    Uwaga

    Szybkość tworzenia migawki jest ograniczona przez ustawienie SnapshotsPerTenMinutesLimit. Domyślnie limit to jedna migawka co 10 minut.

  6. Po powrocie FirstChanceException programu obsługi zgłaszany wyjątek jest przetwarzany normalnie.

  7. Wyjątek ponownie dociera do TrackException metody i jest zgłoszony do usługi Application Insights wraz z identyfikatorem migawki.

Uwaga

Ustaw IsEnabledInDeveloperMode na true, jeśli chcesz generować migawki podczas debugowania w programie Visual Studio.

Proces przesyłania migawek za pomocą uploadera

Podczas gdy proces debugowania migawek nadal działa i z niewielkimi przerwami obsługuje ruch użytkowników, migawka jest przekazywana do procesu przesyłania migawek. W typowym scenariuszu Uploader migawek:

  1. Tworzy minidump.

  2. Przekazuje minidump do usługi Application Insights wraz ze wszystkimi odpowiednimi plikami symboli (.pdb).

Uwaga

Nie można przekazać więcej niż 50 migawek dziennie.

Jeśli włączono debuger migawek, ale nie widzisz migawek, zobacz Przewodnik rozwiązywania problemów.

Uaktualnianie Snapshot Debugger

Automatyczne uaktualnienia program Snapshot Debugger są realizowane za pośrednictwem wbudowanego, wstępnie zainstalowanego rozszerzenia strony Application Insights.

Ręczne dodawanie rozszerzenia witryny usługi Application Insights w celu zachowania aktualności debugera migawek jest przestarzałe.

Koszty ogólne

Debuger migawek jest przeznaczony do użytku w środowiskach produkcyjnych. Ustawienia domyślne obejmują limity szybkości, aby zminimalizować wpływ na aplikacje.

Możliwe, że wystąpi małe obciążenie procesora, pamięci i operacji we/wy związanych z debugerem migawek, na przykład:

  • Gdy w aplikacji jest zgłaszany wyjątek
  • Jeśli program obsługi wyjątków zdecyduje się utworzyć migawkę
  • Gdy TrackException jest wywoływany

Nie ma dodatkowych kosztów przechowywania danych przechwyconych przez narzędzie Snapshot Debugger.

Zobacz przykładowe scenariusze, w których może wystąpić obciążenie narzędzia Snapshot Debugger.

Ograniczenia

W tej sekcji omówiono ograniczenia dotyczące debugera migawek.

  • Przechowywanie danych

    Migawki debugowania są przechowywane przez 15 dni. Domyślne zasady przechowywania danych są ustawiane dla poszczególnych aplikacji. Jeśli chcesz zwiększyć tę wartość, możesz poprosić o zwiększenie, otwierając zgłoszenie do pomocy technicznej w witrynie Azure Portal. Dla każdego wystąpienia usługi Application Insights dozwolona jest maksymalna liczba 50 migawek dziennie.

  • Symbole publikowania

    Debuger migawek wymaga plików symboli na serwerze produkcyjnym, aby:

    • Dekoduj zmienne
    • Zapewnianie środowiska debugowania w programie Visual Studio

    Domyślnie program Visual Studio 2017 w wersji 15.2 lub nowszej publikuje symbole kompilacji wydania podczas publikowania w usłudze App Service.

    W poprzednich wersjach należy dodać następującą linię do pliku profilu .pubxml publikowania, aby symbole zostały opublikowane w trybie release:

         <ExcludeGeneratedDebugSymbol>False</ExcludeGeneratedDebugSymbol>
    

    W przypadku usługi Azure Compute i innych typów upewnij się, że pliki symboli są następujące:

    • W tym samym folderze głównej aplikacji .dll (zazwyczaj wwwroot/bin), lub
    • Dostępne w bieżącej ścieżce.

    Aby uzyskać więcej informacji na temat różnych dostępnych opcji symboli, zobacz dokumentację programu Visual Studio. Aby uzyskać najlepsze wyniki, zalecamy użycie opcji Full, Portable lub Embedded.

  • Zoptymalizowane kompilacje

    W niektórych przypadkach zmiennych lokalnych nie można wyświetlić w kompilacjach wydania z powodu optymalizacji stosowanych przez kompilator JIT.

    Jednak w usłudze App Service, Snapshot Debugger może deoptymalizować metody, które są częścią jego planu zbierania danych.

    Napiwek

    Zainstaluj rozszerzenie witryny "Application Insights" w wystąpieniu usługi App Service, aby uzyskać wsparcie dla deoptymalizacji.

Następne kroki

Włącz debuger migawek usługi Application Insights dla aplikacji: