Rozwiązywanie problemów i znane problemy z debugowaniem migawek w programie Visual Studio
Dotyczy: Visual Studio
Ten artykuł zawiera rozwiązania typowych problemów, które mogą wystąpić podczas debugowania aplikacji platformy Azure za pomocą narzędzia Snapshot Debugger w programie Visual Studio.
Jeśli kroki opisane w tym artykule nie rozwiążą problemu, wyszukaj problem w społeczności deweloperów lub zgłoś nowy problem, wybierając pozycję Pomoc>Wyślij opinię>Zgłoś problem w programie Visual Studio.
Problem: "Dołączanie debugera migawek" napotyka błąd kodu stanu HTTP
Jeśli podczas próby dołączenia zostanie wyświetlony następujący błąd w oknie Dane wyjściowe , może to być znany problem wymieniony w poniższych sekcjach. Wypróbuj proponowane rozwiązania, a jeśli problem będzie nadal występować, skontaktuj się z poprzednim aliasem.
[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX
(401) Brak autoryzacji
Ten błąd wskazuje, że wywołanie REST wystawione przez program Visual Studio na platformie Azure używa nieprawidłowego poświadczenia.
Podejmij te kroki:
- Upewnij się, że konto personalizacji programu Visual Studio ma uprawnienia do subskrypcji i zasobu platformy Azure, do którego dołączasz. Szybkim sposobem ustalenia tego jest sprawdzenie, czy zasób jest dostępny w oknie dialogowym debugowania Debuger>migawek dołączania...>Zasób>platformy Azure wybierz pozycję Istniejący lub w Eksploratorze chmury.
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
Jeśli włączono uwierzytelnianie/autoryzację (EasyAuth) w usłudze App Service, może wystąpić błąd 401 z funkcją LaunchAgentAsync w komunikacie o błędzie stosu wywołań. Upewnij się, że akcja do wykonania, gdy żądanie nie jest uwierzytelnione , jest ustawiona na zezwalanie na żądania anonimowe (bez akcji) w witrynie Azure Portal i podaj authorization.json w katalogu D:\Home\sites\wwwroot z następującą zawartością.
{
"routes": [
{
"path_prefix": "/",
"policies": {
"unauthenticated_action": "RedirectToLoginPage"
}
},
{
"http_methods": [ "POST" ],
"path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
"policies": {
"unauthenticated_action": "AllowAnonymous"
}
}
]
}
Pierwsza trasa skutecznie zabezpiecza domenę aplikacji podobną do logowania za pomocą elementu [IdentityProvider]. Druga trasa uwidacznia punkt końcowy SnapshotDebugger AgentLaunch poza uwierzytelnianiem, który wykonuje wstępnie zdefiniowaną akcję uruchamiania agenta diagnostycznego SnapshotDebugger tylko wtedy, gdy rozszerzenie witryny wstępnie zainstalowanej migawkiDebugger jest włączone dla usługi app Service. Aby uzyskać więcej informacji na temat konfiguracji authorization.json , zobacz Reguły autoryzacji adresów URL.
(403) Zabronione
Błąd 403 — Zabronione wskazuje, że odmowa uprawnień. Wiele różnych scenariuszy może spowodować ten błąd.
Podejmij te kroki:
- Sprawdź, czy konto programu Visual Studio ma prawidłową subskrypcję platformy Azure z niezbędnymi uprawnieniami kontroli dostępu opartej na rolach (RBAC) dla zasobu. W przypadku usługi AppService sprawdź, czy masz uprawnienia do wykonywania zapytań dotyczących planu usługi App Service hostowania aplikacji.
- Sprawdź, czy sygnatura czasowa maszyny klienckiej jest poprawna i aktualna. Serwery ze znacznikami czasu wyłączone przez więcej niż 15 minut znacznika czasu żądania zwykle generują ten błąd.
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
(404) Nie znaleziono
Błąd 404 — Nie znaleziono wskazuje, że nie można odnaleźć witryny sieci Web na serwerze.
Podejmij te kroki:
- Sprawdź, czy witryna internetowa została wdrożona i uruchomiona w zasobie usługi App Service, do którego się dołączasz.
- Sprawdź, czy witryna jest dostępna w witrynie https://< resource.azurewebsites.net>
- Sprawdź, czy prawidłowo uruchomiona niestandardowa aplikacja internetowa nie zwraca kodu stanu 404, gdy jest dostępny pod adresem https:// resource.azurewebsites.net>.<
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
(406) Nie do przyjęcia
Błąd 406 — Nie do przyjęcia wskazuje, że serwer nie może odpowiedzieć na typ ustawiony w nagłówku Accept żądania.
Podejmij te kroki:
- Sprawdź, czy witryna jest dostępna pod adresem https:// resource.azurewebsites.net><.
- Sprawdź, czy witryna nie została zmigrowana do nowych wystąpień. Narzędzie Snapshot Debugger używa pojęcia ARRAffinity do routingu żądań do określonych wystąpień, które mogą sporadycznie generować ten błąd.
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
(409) Konflikt
Błąd 409 — Konflikt wskazuje, że żądanie powoduje konflikt z bieżącym stanem serwera.
Jest to znany problem, który występuje, gdy użytkownik próbuje dołączyć debuger migawki do usługi AppService, która włączyła usługę ApplicationInsights. Usługa ApplicationInsights ustawia wartość AppSettings z inną wielkością liter niż Visual Studio, powodując ten problem.
Rozwiązaliśmy ten problem w programie Visual Studio 2019.
Podejmij te kroki:
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
(500) Wewnętrzny błąd serwera
Błąd 500 — wewnętrzny błąd serwera wskazuje, że lokacja nie działa lub serwer nie może obsłużyć żądania. Debuger migawek działa tylko w przypadku uruchomionych aplikacji. Debuger migawek usługi Application Insights udostępnia migawki wyjątków i może być najlepszym narzędziem dla Twoich potrzeb.
(502) Zła brama
Błąd 502 — Zła brama wskazuje problem z siecią po stronie serwera i może być tymczasowy.
Podejmij te kroki:
- Spróbuj poczekać kilka minut przed ponownym dołączeniem debugera migawek.
- Jeśli ten błąd będzie nadal występować, użyj jednego z kanałów opinii opisanych na początku tego artykułu.
Problem: Punkt przyciągania nie jest włączony
Jeśli zostanie wyświetlona ikona ostrzeżenia z punktem przyciągania zamiast ikony zwykłego punktu przyciągania, punkt przyciągania nie jest włączony.
Podejmij te kroki:
- Upewnij się, że używasz tej samej wersji kodu źródłowego do kompilowania i wdrażania aplikacji.
- Upewnij się, że ładujesz poprawne symbole wdrożenia.
- W tym celu wyświetl okno Moduły podczas debugowania migawek i sprawdź, czy w kolumnie Plik symboli jest wyświetlany plik pdb załadowany dla debugowania modułu.
- Debuger migawek spróbuje automatycznie pobrać symbole wdrożenia i używać ich.
Problem: Symbole nie są ładowane podczas otwierania migawki
Jeśli zostanie wyświetlone następujące okno, symbole nie załadowały się.
Podejmij te kroki:
Wybierz pozycję Zmień ustawienia symboli... na stronie.
W ustawieniach Symbol debugowania > dodaj katalog pamięci podręcznej symboli.
Uruchom ponownie debugowanie migawki po ustawieniu ścieżki symboli.
Symbole lub pliki .pdb dostępne w projekcie muszą być zgodne z wdrożeniem usługi App Service. Większość wdrożeń (wdrożenie za pośrednictwem programu Visual Studio, ciągłej integracji/ciągłego wdrażania za pomocą usługi Azure Pipelines lub Kudu itp.) publikuje pliki symboli razem z usługą App Service. Ustawienie katalogu pamięci podręcznej symboli umożliwia programowi Visual Studio używanie tych symboli.
Alternatywnie, jeśli organizacja używa serwera symboli lub usuwa symbole w innej ścieżce, użyj ustawień symboli, aby załadować poprawne symbole dla wdrożenia.
Problem: Nie widzę opcji "Dołącz debuger migawek" w Eksploratorze chmury
Podejmij te kroki:
Upewnij się, że składnik Snapshot Debugger jest zainstalowany. Otwórz Instalator programu Visual Studio i sprawdź składnik Snapshot Debugger w obciążeniu platformy Azure.
W przypadku programu Visual Studio 2019 lub nowszych wersji upewnij się, że aplikacja jest obsługiwana:
- aplikacja systemu Azure Services — aplikacje ASP.NET działające w programie .NET Framework 4.6.1 lub nowszym.
- aplikacja systemu Azure Services — aplikacje ASP.NET Core działające na platformie .NET Core 2.0 lub nowszym w systemie Windows.
- Azure Virtual Machines (i zestaw skalowania maszyn wirtualnych) — ASP.NET aplikacje działające w programie .NET Framework 4.6.1 lub nowszym.
- Azure Virtual Machines (i zestaw skalowania maszyn wirtualnych) — aplikacje ASP.NET Core działające na platformie .NET Core 2.0 lub nowszym w systemie Windows.
- Azure Kubernetes Services — aplikacje ASP.NET Core działające na platformie .NET Core 2.2 lub nowszym w systemie Debian 9.
- Azure Kubernetes Services — aplikacje ASP.NET Core działające na platformie .NET Core 2.2 lub nowszym w wersji Alpine 3.8.
- Azure Kubernetes Services — aplikacje ASP.NET Core działające na platformie .NET Core 2.2 lub nowszym w systemie Ubuntu 18.04.
Problem: Widzę tylko migawki ograniczone w narzędziach diagnostycznych
Podejmij te kroki:
- Migawki zajmują mało pamięci, ale mają opłatę za zatwierdzenie. Jeśli narzędzie Snapshot Debugger wykryje, że serwer jest obciążony dużą ilością pamięci, nie spowoduje to tworzenia migawek. Migawki można usunąć, zatrzymując sesję debugera migawek i próbując ponownie.
Problem: Debugowanie migawki z wieloma wersjami programu Visual Studio powoduje błędy (Visual Studio 2019 lub nowsze wersje)
Program Visual Studio 2019 wymaga nowszej wersji rozszerzenia witryny Snapshot Debugger w usłudze aplikacja systemu Azure. Ta wersja nie jest zgodna ze starszą wersją rozszerzenia witryny Snapshot Debugger używanego przez program Visual Studio 2017. Jeśli spróbujesz dołączyć debuger migawki w programie Visual Studio 2019 do usługi aplikacja systemu Azure, która została wcześniej debugowana przez debuger migawki w programie Visual Studio 2017, zostanie wyświetlony następujący błąd:
Z drugiej strony, jeśli używasz programu Visual Studio 2017 do dołączania debugera migawek do usługi aplikacja systemu Azure, która została wcześniej debugowana przez debuger migawki w programie Visual Studio 2019, zostanie wyświetlony następujący błąd:
Aby rozwiązać ten problem, usuń następujące ustawienia aplikacji w witrynie Azure Portal i ponownie dołącz debuger migawki:
INSTRUMENTATIONENGINE_EXTENSION_VERSION
SNAPSHOTDEBUGGER_EXTENSION_VERSION
Problem: Dołączam do nieprawidłowego/starego zasobu platformy Azure lub konta magazynu
Podejmij te kroki:
Wpisy "Zasób platformy Azure" i "Konto magazynu" używają nazw zasobów jako kluczy, aby akcje takie jak migrowanie zasobu do różnych subskrypcji mogły powodować problemy. Aby wyczyścić listę, wykonaj następujące kroki:
Uruchom te polecenia w wierszu polecenia dewelopera dla programu VS (z uprawnieniami administratora).
vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
Usuń wszystkie pliki suo skojarzone z aplikacją internetową.
Problem: Mam problemy z debugowaniem migawek i muszę włączyć więcej rejestrowania
Włączanie dzienników agentów
Aby włączyć i wyłączyć rejestrowanie agentów, otwórz program Visual Studio i przejdź do pozycji Narzędzia>Opcje>migawki Debuger>Włączanie rejestrowania agenta. Należy pamiętać, że jeśli włączono również opcję Usuń stare dzienniki agenta podczas uruchamiania sesji, każde pomyślne dołączenie programu Visual Studio spowoduje usunięcie poprzednich dzienników agenta.
Dzienniki agentów można znaleźć w następujących lokalizacjach:
- App Services:
- Przejdź do witryny Kudu usługi App Service (czyli <twojej aplikacji).>scm.azurewebsites.net) i przejdź do konsoli debugowania.
- Dzienniki agenta są przechowywane w następującym katalogu: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
- Maszyna wirtualna/zestaw skalowania maszyn wirtualnych:
- Zaloguj się do maszyny wirtualnej, dzienniki agentów są przechowywane w następujący sposób: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
- Usługa AKS
- Przejdź do następującego katalogu: /tmp/diag/AgentLogs/*
Włączanie dzienników profilera/instrumentacji
Dzienniki instrumentacji można znaleźć w następujących lokalizacjach:
- App Services:
- Rejestrowanie błędów jest automatycznie wysyłane do folderu D:\Home\LogFiles\eventlog.xml, zdarzenia są oznaczone znakami
<Provider Name="Instrumentation Engine" />
lub "Produkcyjne punkty przerwania"
- Rejestrowanie błędów jest automatycznie wysyłane do folderu D:\Home\LogFiles\eventlog.xml, zdarzenia są oznaczone znakami
- Maszyna wirtualna/zestaw skalowania maszyn wirtualnych:
- Zaloguj się do maszyny wirtualnej i otwórz Podgląd zdarzeń.
- Otwórz następujący widok: Aplikacja dzienników systemu> Windows.
- Filtruj bieżący dziennik według źródła zdarzeń przy użyciu produkcyjnych punktów przerwania lub aparatu instrumentacji.
- Usługa AKS
- Rejestrowanie aparatu instrumentacji w pliku /tmp/diag/log.txt (ustaw
MicrosoftInstrumentationEngine_FileLogPath
w pliku DockerFile) - Rejestrowanie punktu produkcyjnego przy /tmp/diag/shLog.txt
- Rejestrowanie aparatu instrumentacji w pliku /tmp/diag/log.txt (ustaw
Znane problemy
- Debugowanie migawek z wieloma klientami programu Visual Studio w tej samej usłudze App Service nie jest obecnie obsługiwane.
- Optymalizacje języka ROSlyn IL nie są w pełni obsługiwane w projektach ASP.NET Core. W przypadku niektórych projektów ASP.NET Core może nie być możliwe wyświetlenie niektórych zmiennych lub użycie niektórych zmiennych w instrukcjach warunkowych.
- Zmienne specjalne, takie jak
$FUNCTION
lub$CALLER
, nie mogą być oceniane w instrukcjach warunkowych lub punktach dziennika dla projektów ASP.NET Core. - Debugowanie migawek nie działa w usługach App Services, które mają włączoną lokalną buforowanie .
- Debugowanie migawek w usłudze API Apps nie jest obecnie obsługiwane.
Uaktualnianie rozszerzenia witryny
Debugowanie migawek i usługa Application Insights zależą od elementu ICorProfiler, który ładuje się do procesu lokacji i powoduje problemy z blokowaniem plików podczas uaktualniania. Zalecamy ten proces, aby upewnić się, że nie ma czasu pracy z twoją lokacją produkcyjną.
- Utwórz miejsce wdrożenia w usłudze App Service i wdróż witrynę w miejscu.
- Zamień miejsce na środowisko produkcyjne z programu Cloud Explorer w programie Visual Studio lub w witrynie Azure Portal.
- Zatrzymaj witrynę miejsca. Zabicie lokacji w3wp.exe procesu ze wszystkich wystąpień zajmuje kilka sekund.
- Uaktualnij rozszerzenie witryny miejsca z witryny Kudu lub witryny Azure Portal (aktualizacja rozszerzeń narzędzi deweloperskich > bloku > > usługi App Service).
- Uruchom witrynę miejsca. Zalecamy ponowne zapoznanie się z witryną, aby ją rozgrzać.
- Zamień miejsce na środowisko produkcyjne.
Informacje
- Debugowanie w programie Visual Studio
- Debugowanie aplikacji ASP.NET na żywo przy użyciu debugera migawek
- Debugowanie na żywo ASP.NET usługi Azure Virtual Machines\Virtual Machines Scale Sets przy użyciu debugera migawek
- Debugowanie na żywo ASP.NET azure Kubernetes przy użyciu debugera migawek
- Debugowanie migawek — często zadawane pytania