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 w zgłaszanych wyjątkach.
  • Zawiera informacje potrzebne do diagnozowania problemów w środowisku produkcyjnym.

Dowiedz się więcej na temat procesów narzędzia Snapshot Debugger i programu do przekazywania migawek.

Obsługiwane aplikacje i środowiska

W tej sekcji wymieniono 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 dodano cię do roli debugera migawek migawki usługi Application Insights dla docelowej migawki usługi Application Insights.

Jak działa debuger migawek

Debuger migawek jest implementowany jako procesor telemetrii usługi Application Insights. Po uruchomieniu aplikacji procesor telemetrii Snapshot Debugger jest dodawany do potoku dzienników generowanych przez system aplikacji.

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 debugera migawek

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ść, identyfikator problemu ThresholdForSnapshotting zostanie dodany do planu kolekcji.

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

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

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

    Uwaga

    Szybkość tworzenia migawki jest ograniczona SnapshotsPerTenMinutesLimit przez ustawienie. 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łaszany do usługi Application Insights wraz z identyfikatorem migawki.

Uwaga

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

Proces przekazywania migawek

Podczas gdy proces debugera migawek nadal działa i obsługuje ruch do użytkowników z niewielkimi przerwami, migawka jest przekazywana do procesu przekazywania migawek. W typowym scenariuszu program przekazujący migawki:

  1. Tworzy minidump.

  2. Przekazuje minidump do usługi Application Insights wraz z dowolnymi 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 debugera migawek

Automatyczne uaktualnienia debugera migawek za pośrednictwem wbudowanego, wstępnie zainstalowanego rozszerzenia witryny usługi Application Insights.

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

Obciążenie

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

Może jednak wystąpić niewielkie obciążenie związane z procesorem CPU, pamięcią i we/wy skojarzonym 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ący wiersz do pliku profilu .pubxml publikowania, aby symbole zostały opublikowane w trybie wydania:

         <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 debuger migawek może deoptymalizować metody, które są częścią planu kolekcji.

    Napiwek

    Zainstaluj rozszerzenie witryny usługi Application Insights w wystąpieniu usługi App Service, aby uzyskać obsługę deoptymalizacji.

Następne kroki

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