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ą debugera migawek w programie Visual Studio.

Jeśli kroki opisane w tym artykule nie rozwiążą problemu, wyszukaj problem w Developer Community lub zgłoś nowy problem, wybierając pozycję Pomoc>wyślij zgłoszenie opinii>o problemie w programie Visual Studio.

Problem: "Dołączanie debugera migawki" napotyka błąd kodu stanu HTTP

Jeśli podczas próby dołączenia w oknie Dane wyjściowe zostanie wyświetlony następujący błąd, może to być znany problem wymieniony w poniższych sekcjach. Wypróbuj proponowane rozwiązania, a jeśli problem będzie się powtarzać, 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.

Wykonaj następujące kroki:

  • Upewnij się, że twoje konto personalizacji programu Visual Studio ma uprawnienia do subskrypcji i zasobu platformy Azure, do których dołączasz. Szybkim sposobem ustalenia tego sposobu jest sprawdzenie, czy zasób jest dostępny w oknie dialogowym z debugowania debugera>dołączania migawki...>Zasób> platformy AzureWybierz pozycję Istniejące lub w Eksploratorze chmury.
  • Jeśli ten błąd będzie się powtarzać, użyj jednego z kanałów opinii opisanych na początku tego artykułu.

Jeśli włączono uwierzytelnianie/autoryzację (EasyAuth) w App Service, w komunikacie o błędzie stosu wywołań może wystąpić błąd 401 z elementem LaunchAgentAsync. Upewnij się, że akcja do wykonania, gdy żądanie nie jest uwierzytelnione, ma wartość Zezwalaj na żądania anonimowe (bez akcji) w Azure Portal i podaj authorization.json w pliku 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, podobnie jak w przypadku logowania przy użyciu 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 wstępnie zainstalowane rozszerzenie lokacji SnapshotDebugger jest włączone dla usługi App Service. Aby uzyskać więcej informacji na temat konfiguracji authorization.json , zobacz Reguły autoryzacji adresu URL.

(403) Zabronione

Błąd 403 — Zabronione wskazuje, że uprawnienie zostało odrzucone. Ten błąd może powodować wiele różnych scenariuszy.

Wykonaj następujące kroki:

  • Sprawdź, czy Twoje konto programu Visual Studio ma prawidłową subskrypcję platformy Azure z niezbędnymi uprawnieniami Role-Based Access Control (RBAC) dla zasobu. W przypadku usługi AppService sprawdź, czy masz uprawnienia do wykonywania zapytań dotyczących planu App Service hostującego aplikację.
  • Sprawdź, czy sygnatura czasowa maszyny klienckiej jest poprawna i aktualna. Serwery ze znacznikami czasu wyłączone przez ponad 15 minut sygnatury czasowej żądania zwykle generują ten błąd.
  • Jeśli ten błąd będzie się powtarzać, 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 internetowej na serwerze.

Wykonaj następujące kroki:

  • Sprawdź, czy masz witrynę internetową wdrożoną i uruchomioną na zasobie App Service, do której się dołączasz.
  • Sprawdź, czy witryna jest dostępna pod adresem https://< resource.azurewebsites.net>
  • Sprawdź, czy prawidłowo uruchomiona niestandardowa aplikacja internetowa nie zwraca kodu stanu 404 po uzyskaniu dostępu w witrynie https://< resource.azurewebsites.net>.
  • Jeśli ten błąd będzie się powtarzać, 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.

Wykonaj następujące kroki:

  • Sprawdź, czy witryna jest dostępna pod adresem https://< resource.azurewebsites.net>.
  • Sprawdź, czy witryna nie została zmigrowana do nowych wystąpień. Debuger migawek używa pojęcia koligacji ARRAffinity do routingu żądań do określonych wystąpień, które mogą sporadycznie generować ten błąd.
  • Jeśli ten błąd będzie się powtarzać, 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 występujący, gdy użytkownik próbuje dołączyć debuger migawek do usługi AppService z włączoną usługą ApplicationInsights. Usługa ApplicationInsights ustawia ustawienia AppSettings z inną wielkością liter niż program Visual Studio, co powoduje ten problem.

Rozwiązaliśmy ten problem w programie Visual Studio 2019.

Wykonaj następujące kroki:

  • Jeśli ten błąd będzie się powtarzać, 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 witryna nie działa lub serwer nie może obsłużyć żądania. Debuger migawek działa tylko w uruchomionych aplikacjach. Debuger migawek usługi Application Insights udostępnia migawki wyjątków i może być najlepszym narzędziem do twoich potrzeb.

(502) Zła brama

Błąd 502 — Zła brama wskazuje problem z siecią po stronie serwera i może być tymczasowy.

Wykonaj następujące kroki:

  • Spróbuj odczekać kilka minut przed ponownym dołączeniem debugera migawki.
  • Jeśli ten błąd będzie się powtarzać, 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 zwykłej ikony punktu przyciągania, punkt przyciągania nie zostanie włączony.

Zrzut ekranu pokazujący, że program Snappoint nie jest włączony.

Wykonaj następujące kroki:

  • Upewnij się, że używasz tej samej wersji kodu źródłowego do tworzenia i wdrażania aplikacji.
  • Upewnij się, że ładujesz poprawne symbole dla wdrożenia.
  • W tym celu wyświetl okno Moduły podczas debugowania migawki i sprawdź, czy kolumna Plik symboli zawiera plik pdb załadowany do debugowania modułu.
    • Debuger migawek spróbuje automatycznie pobrać symbole i użyć ich do wdrożenia.

Problem: Symbole nie są ładowane po otwarciu migawki

Jeśli widzisz następujące okno, symbole nie zostały załadowane.

Zrzut ekranu pokazujący, że symbole nie są ładowane.

Wykonaj następujące 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 symbolu.

    Symbole lub pliki pdb dostępne w projekcie muszą być zgodne z wdrożeniem App Service. Większość wdrożeń (wdrażanie za pośrednictwem programu Visual Studio, ciągłej integracji/ciągłego wdrażania przy użyciu usługi Azure Pipelines lub Kudu itp.) publikuje pliki symboli wraz z App Service. Ustawienie katalogu pamięci podręcznej symboli umożliwia programowi Visual Studio używanie tych symboli.

    Zrzut ekranu przedstawiający ustawienia symboli.

  • Alternatywnie, jeśli organizacja używa serwera symboli lub porzuca symbole w innej ścieżce, użyj ustawień symboli, aby załadować odpowiednie symbole dla wdrożenia.

Problem: Nie widzę opcji "Dołącz debuger migawki" w Eksploratorze chmury

Wykonaj następujące kroki:

  • Upewnij się, że składnik debugera migawek jest zainstalowany. Otwórz Instalator programu Visual Studio i sprawdź składnik Debuger migawek w obciążeniu platformy Azure.

  • W przypadku programu Visual Studio 2019 lub nowszych wersji upewnij się, że aplikacja jest obsługiwana:

    • usługi aplikacja systemu Azure — ASP.NET aplikacje działające w wersji .NET Framework 4.6.1 lub nowszej.
    • usługi aplikacja systemu Azure — ASP.NET Core aplikacje działające na platformie .NET Core 2.0 lub nowszej w systemie Windows.
    • Azure Virtual Machines (i zestaw skalowania maszyn wirtualnych) — ASP.NET aplikacje działające w wersji .NET Framework 4.6.1 lub nowszej.
    • Azure Virtual Machines (i zestaw skalowania maszyn wirtualnych) — ASP.NET Core aplikacje działające na platformie .NET Core 2.0 lub nowszej w systemie Windows.
    • Azure Kubernetes Services — ASP.NET Core aplikacje działające na platformie .NET Core 2.2 lub nowszej w systemie Debian 9.
    • Azure Kubernetes Services — ASP.NET Core aplikacje działające na platformie .NET Core 2.2 lub nowszej w środowisku Alpine 3.8.
    • Azure Kubernetes Services — ASP.NET Core aplikacje działające na platformie .NET Core 2.2 lub nowszej w systemie Ubuntu 18.04.

Problem: W narzędziach diagnostycznych są widoczne tylko migawki ograniczone

Zrzut ekranu przedstawiający punkt przyciągania z ograniczeniami.

Wykonaj następujące kroki:

  • Migawki zajmują mało pamięci, ale mają opłatę za zatwierdzenie. Jeśli debuger migawek wykryje, że serwer jest obciążony dużą ilością pamięci, nie będzie wykonywać migawek. Możesz usunąć już przechwycone migawki, zatrzymując sesję debugera migawek i próbując ponownie.

Problem: Debugowanie migawek z wieloma wersjami programu Visual Studio powoduje błędy (program Visual Studio 2019 lub nowsze wersje)

Program Visual Studio 2019 wymaga nowszej wersji rozszerzenia witryny debugera migawek w Azure App Service. Ta wersja nie jest zgodna ze starszą wersją rozszerzenia witryny debugera migawek używanego przez program Visual Studio 2017. Jeśli spróbujesz dołączyć debuger migawek w programie Visual Studio 2019 do Azure App Service, który został wcześniej debugowany przez debuger migawek w programie Visual Studio 2017, zostanie wyświetlony następujący błąd:

Zrzut ekranu przedstawiający niezgodne rozszerzenie witryny debugera migawek Programu Visual Studio 2019.

Z drugiej strony, jeśli używasz programu Visual Studio 2017 do dołączania debugera migawek do Azure App Service, który został wcześniej debugowany przez debuger migawek w programie Visual Studio 2019, zostanie wyświetlony następujący błąd:

Zrzut ekranu przedstawiający niezgodne rozszerzenie witryny debugera migawek Programu Visual Studio 2017.

Aby rozwiązać ten problem, usuń następujące ustawienia aplikacji w 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

Wykonaj następujące kroki:

Wpisy "Zasób platformy Azure" i "Konto magazynu" używają nazw zasobów jako kluczy, więc akcje, takie jak migracja zasobu do różnych subskrypcji, mogą powodować problemy. Aby wyczyścić listę, wykonaj następujące kroki:

  1. 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
    
  2. 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 agenta

Aby włączyć i wyłączyć rejestrowanie agentów, otwórz program Visual Studio i przejdź do pozycji Narzędzia>Opcje>migawki Debuger>Włącz rejestrowanie agenta. Pamiętaj, że jeśli włączono również opcję Usuń stare dzienniki agenta podczas uruchamiania sesji , każde pomyślne dołączenie do 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 App Service (tj<. yourappservice>).scm.azurewebsites.net) i przejdź do konsoli debugowania.
    • Dzienniki agenta są przechowywane w następującym katalogu: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • Maszyny wirtualne/maszyny wirtualne:
    • 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_
  • AKS
    • Przejdź do następującego katalogu: /tmp/diag/AgentLogs/*

Włączanie dzienników profiler/instrumentacji

Dzienniki instrumentacji można znaleźć w następujących lokalizacjach:

  • App Services:
    • Rejestrowanie błędów jest automatycznie wysyłane do D:\Home\LogFiles\eventlog.xml, zdarzenia są oznaczone znakiem <Provider Name="Instrumentation Engine" /> lub "Produkcyjne punkty przerwania"
  • Maszyny wirtualne/maszyny wirtualne:
    • 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.
  • AKS
    • Rejestrowanie aparatu instrumentacji na stronie /tmp/diag/log.txt (ustawione w pliku MicrosoftInstrumentationEngine_FileLogPath DockerFile)
    • Rejestrowanie programu ProductionBreakpoint pod adresem /tmp/diag/shLog.txt

Znane problemy

  • Debugowanie migawek z wieloma klientami programu Visual Studio przy użyciu tego samego App Service nie jest obecnie obsługiwane.
  • Optymalizacje il Roslyn nie są w pełni obsługiwane w projektach ASP.NET Core. W przypadku niektórych ASP.NET Core projektów może nie być możliwe wyświetlenie niektórych zmiennych lub użycie niektórych zmiennych w instrukcjach warunkowych.
  • Zmiennych specjalnych, takich jak $FUNCTION lub $CALLER, nie można oceniać w instrukcjach warunkowych ani punktach dziennika dla projektów ASP.NET Core.
  • Debugowanie migawek nie działa w usługach App Services, w których włączono lokalne buforowanie .
  • Usługa API Apps debugowania migawek nie jest obecnie obsługiwana.

Uaktualnianie rozszerzenia lokacji

Debugowanie migawek i usługa Application Insights zależą od pliku 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 przestoju w lokacji produkcyjnej.

  • Utwórz miejsce wdrożenia w App Service i wdróż witrynę w miejscu.
  • Zamień miejsce na środowisko produkcyjne z programu Cloud Explorer w programie Visual Studio lub z Azure Portal.
  • Zatrzymaj lokację gniazda. Usunięcie lokacji w3wp.exe procesu ze wszystkich wystąpień trwa kilka sekund.
  • Uaktualnij rozszerzenie lokacji miejsca z witryny Kudu lub Azure Portal (aktualizacja rozszerzeń narzędzi > deweloperskich > bloku App Service>).
  • Uruchom witrynę slotu. Zalecamy odwiedzenie witryny, aby ponownie ją ogrzać.
  • Zamień miejsce na produkcyjne.

Informacje