Udostępnij za pośrednictwem


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.

Zrzut ekranu pokazujący, że 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ę.

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

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.

    Zrzut ekranu przedstawiający ustawienia 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

Zrzut ekranu przedstawiający ograniczony punkt przyciągania.

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:

Zrzut ekranu przedstawiający niezgodne rozszerzenie witryny Snapshot Debugger Visual Studio 2019.

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:

Zrzut ekranu przedstawiający niezgodne rozszerzenie witryny Snapshot Debugger Visual Studio 2017.

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:

  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 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"
  • 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

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