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.
Obsługiwane aplikacje i środowiska
W tej sekcji wymieniono obsługiwane aplikacje i środowiska.
Aplikacje
Kolekcja migawek jest dostępna dla:
- .NET Framework 4.6.2 i nowsze wersje.
- Platforma .NET 6.0 lub nowsza w systemie Windows.
Środowiska
Obsługiwane są następujące środowiska:
- Azure App Service
- Azure Functions
- Usługi Azure Cloud Services z rodziną systemu operacyjnego 4 lub nowszą
- Usługa Azure Service Fabric uruchomiona w systemie Windows Server 2012 R2 lub nowszym
- Maszyny wirtualne platformy Azure i zestawy skalowania maszyn wirtualnych platformy Azure z systemem Windows Server 2012 R2 lub nowszym
- Lokalne maszyny wirtualne lub fizyczne z systemem Windows Server 2012 R2 lub nowszym lub Windows 8.1 lub nowszym
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
- Uwzględnij pakiet NuGet modułu zbierającego migawki w aplikacji.
- Skonfiguruj parametry kolekcji w programie
ApplicationInsights.config
.
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:
Aplikacja zgłasza błąd
TrackException
.Debuger migawek monitoruje wyjątki w miarę ich zgłaszania przez subskrybowanie zdarzenia
AppDomain.CurrentDomain.FirstChanceException
.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.- Gdy licznik osiągnie wartość, identyfikator problemu
Identyfikator problemu zdarzenia wyjątku jest obliczany i porównywany z identyfikatorami problemów w planie kolekcji.
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.Po powrocie
FirstChanceException
programu obsługi zgłaszany wyjątek jest przetwarzany normalnie.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:
Tworzy minidump.
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
(zazwyczajwwwroot/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: