Freigeben über


Problembehandlung und bekannte Probleme beim Debuggen von Momentaufnahmen in Visual Studio

Gilt für: Visual Studio

Dieser Artikel enthält Lösungen allgemeiner Probleme, die beim Debuggen einer Azure-App mit Snapshot Debugger in Visual Studio auftreten können.

Wenn die in diesem Artikel beschriebenen Schritte Ihr Problem nicht beheben, suchen Sie nach dem Problem bei Entwicklercommunity oder melden Sie ein neues Problem, indem Sie "Hilfe>zum Senden von Feedback>melden" in Visual Studio auswählen.

Problem: "Snapshotdebugger anfügen" tritt auf einen HTTP-Statuscodefehler auf.

Wenn während des Anfügens im Ausgabefenster der folgende Fehler angezeigt wird, kann es sich um ein bekanntes Problem handeln, das in den folgenden Abschnitten aufgeführt ist. Probieren Sie die vorgeschlagenen Lösungen aus, und wenn das Problem weiterhin besteht, wenden Sie sich an den vorherigen Alias.

[TIMESTAMP] Error --- Unable to Start Snapshot Debugger - Attach Snapshot Debugger failed: System.Net.WebException: The remote server returned an error: (###) XXXXXX

401 – Nicht autorisiert

Dieser Fehler deutet darauf hin, dass der von Visual Studio für Azure ausgegebene REST-Aufruf ungültige Anmeldeinformationen verwendet.

Führen Sie die folgenden Schritte aus:

  • Stellen Sie sicher, dass Ihr Visual Studio-Personalisierungskonto über Berechtigungen für das Azure-Abonnement und die Ressource verfügt, an die Sie anfügen. Eine schnelle Möglichkeit, dies bestätigen zu können, ist es, zu überprüfen, ob die Ressource im Dialogfeld über Debuggen>Momentaufnahmedebugger anfügen…>Azure-Ressource>Vorhandene auswählen oder im Cloud-Explorer verfügbar ist.
  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

Wenn Sie Authentifizierung/Autorisierung (EasyAuth) für Ihren App Service aktiviert haben, tritt möglicherweise Fehler 401 mit LaunchAgentAsync in der Fehlermeldung der Aufrufliste auf. Stellen Sie sicher, dass die Aktion, die ausgeführt werden soll, wenn die Anforderung nicht authentifiziert wird, auf "Anonyme Anforderungen zulassen" (keine Aktion) im Azure-Portal festgelegt ist, und stellen Sie stattdessen eine authorization.json in D:\Home\sites\wwwroot mit dem folgenden Inhalt bereit.

{
  "routes": [
    {
      "path_prefix": "/",
      "policies": {
        "unauthenticated_action": "RedirectToLoginPage"
      }
    },
    {
      "http_methods": [ "POST" ],
      "path_prefix": "/41C07CED-2E08-4609-9D9F-882468261608/api/agent",
      "policies": {
        "unauthenticated_action": "AllowAnonymous"
      }
    }
  ]
}

Die erste Route sichert Ihre App-Domäne effektiv, ähnlich wie Mit [IdentityProvider] anmelden. Die zweite Route stellt den AgentLaunch-Endpunkt von SnapshotDebugger außerhalb der Authentifizierung bereit, der die vordefinierte Aktion zum Starten des SnapshotDebugger-Diagnose-Agents nur dann ausführt, wenn die vorinstallierte SnapshotDebugger-Siteerweiterung für Ihren App Service aktiviert ist. Weitere Informationen zur konfiguration authorization.json finden Sie unter URL-Autorisierungsregeln.

(403) Unzulässig

Der Fehler "403 – Verboten" gibt an, dass die Berechtigung verweigert wird. Viele verschiedene Szenarien können diesen Fehler verursachen.

Führen Sie die folgenden Schritte aus:

  • Überprüfen Sie, ob Ihr Visual Studio-Konto über ein gültiges Azure-Abonnement mit den erforderlichen Berechtigungen im Rahmen der rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) für die Ressource verfügt. Überprüfen Sie für App Service, ob Sie berechtigt sind, den App Service-Plan abzufragen, der Ihre App hostet.
  • Vergewissern Sie sich, dass der Zeitstempel Ihres Clientcomputers korrekt und aktuell ist. Server mit Zeitstempeln, die sich um mehr als 15 Minuten vom Zeitstempel der Anforderung unterscheiden, führen in der Regel zu diesem Fehler.
  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

404 Nicht gefunden

Der Fehler "404 – Nicht gefunden" weist darauf hin, dass die Website auf dem Server nicht gefunden wurde.

Führen Sie die folgenden Schritte aus:

  • Vergewissern Sie sich, dass Sie eine Website bereitgestellt haben und sie auf der App Service-Ressource ausführen, an die Sie anfügen.
  • Stellen Sie sicher, dass die Website unter https://< resource.azurewebsites.net>
  • Stellen Sie sicher, dass die ordnungsgemäß ausgeführte benutzerdefinierte Webanwendung keinen Statuscode von 404 zurückgibt, wenn auf https://< resource.azurewebsites.net> zugegriffen wird.
  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

406: Nicht annehmbar

Der Fehler "406 – Nicht akzeptabel" gibt an, dass der Server nicht auf den Typ reagieren kann, der im Accept-Header der Anforderung festgelegt ist.

Führen Sie die folgenden Schritte aus:

  • Überprüfen Sie, ob Ihre Website unter https://< resource.azurewebsites.net> verfügbar ist.
  • Stellen Sie sicher, dass Ihre Website nicht zu neuen Instanzen migriert wurde. Snapshot Debugger verwendet den Begriff ARRAffinity für das Weiterleiten von Anforderungen an bestimmte Instanzen, die diesen Fehler zeitweise erzeugen können.
  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

Konflikt (409)

Der Fehler 409 – Konflikt gibt an, dass die Anforderung mit dem aktuellen Serverstatus in Konflikt steht.

Hierbei handelt es sich um ein bekanntes Problem, das auftritt, wenn ein Benutzer versucht, den Momentaufnahmedebugger für eine App Service-Instanz anzufügen, für die Application Insights aktiviert ist. Application Insights legt die App-Einstellungen mit einer anderen Schreibweise als Visual Studio fest, was dieses Problem verursacht.

Dies wurde in Visual Studio 2019 behoben.

Führen Sie die folgenden Schritte aus:

  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

500 – Interner Serverfehler

Der Fehler "500 – Interner Serverfehler" gibt an, dass der Standort ausgefallen ist oder der Server die Anforderung nicht verarbeiten kann. Der Momentaufnahmedebugger kann nur für Anwendungen verwendet werden, die ausgeführt werden. Der Momentaufnahmedebugger von Application Insights stellt Funktionen für Momentaufnahmen von Ausnahmen zur Verfügung, und er eignet sich möglicherweise für Ihre Anforderungen am besten.

502 – Ungültiges Gateway

Der Fehler 502 – Ungültiges Gateway weist auf ein serverseitiges Netzwerkproblem hin und kann vorübergehend sein.

Führen Sie die folgenden Schritte aus:

  • Warten Sie einige Minuten, bevor Sie den Momentaufnahmedebugger neu hinzufügen.
  • Wenn dieser Fehler weiterhin besteht, verwenden Sie einen der Kanäle für Feedback, die zu Beginn dieses Artikels beschrieben wurden.

Problem: Snappoint ist nicht aktiviert

Wenn anstelle des regulären Snappoint-Symbols ein Warnsymbol angezeigt wird, ist der Andockpunkt nicht aktiviert.

Screenshot, der zeigt, dass Snappoint nicht aktiviert ist.

Führen Sie die folgenden Schritte aus:

  • Stellen Sie sicher, dass Sie dieselbe Version des Quellcodes verwenden, um Ihre App zu erstellen und bereitzustellen.
  • Stellen Sie sicher, dass Sie die richtigen Symbole für Ihre Bereitstellung laden.
  • Zeigen Sie dazu das Fenster "Module " beim Snapshotdebugging an, und überprüfen Sie, ob in der Spalte "Symboldatei" eine PDB-Datei angezeigt wird, die für das Modul geladen wurde, das Sie debuggen.
    • Der Momentaufnahmedebugger versucht, automatisch Symbole für die Bereitstellung herunterzuladen und zu verwenden.

Problem: Symbole werden beim Öffnen einer Momentaufnahme nicht geladen

Wenn das folgende Fenster angezeigt wird, wurden die Symbole nicht geladen.

Screenshot, der zeigt, dass Symbole nicht geladen werden.

Führen Sie die folgenden Schritte aus:

  • Wählen Sie auf der Seite "Symboleinstellungen ändern" aus .

  • Fügen Sie in den Einstellungen Debuggen > Symbol ein Symbolcacheverzeichnis hinzu.

  • Starten Sie das Debuggen von Momentaufnahmen neu, nachdem der Symbolpfad festgelegt wurde.

    Die symbole oder PDB-Dateien , die in Ihrem Projekt verfügbar sind, müssen mit Ihrer App Service-Bereitstellung übereinstimmen. Die meisten Bereitstellungen (Bereitstellung über Visual Studio, CI/CD mit Azure Pipelines oder Kudu usw.) veröffentlichen Ihre Symboldateien zusammen mit Ihrem App-Dienst. Die Einstellung des Symbolcacheverzeichnisses ermöglicht Visual Studio, diese Symbole zu verwenden.

    Screenshot, der Einstellungen für Symbole zeigt.

  • Wenn Ihre Organisation einen Symbolserver verwendet oder Symbole in einem anderen Pfad löscht, verwenden Sie alternativ die Symboleinstellungen, um die richtigen Symbole für die Bereitstellung zu laden.

Problem: Die Option "Momentaufnahmedebugger anfügen" wird im Cloud Explorer nicht angezeigt.

Führen Sie die folgenden Schritte aus:

  • Stellen Sie sicher, dass die Momentaufnahmedebugger-Komponente installiert ist. Öffnen Sie den Visual Studio-Installer, und aktivieren Sie die Momentaufnahmedebugger-Komponente in der Azure-Workload.

  • Stellen Sie für Visual Studio 2019 oder höher sicher, dass Ihre App unterstützt wird:

    • Azure App Services – ASP.NET-Apps, die in .NET Framework 4.6.1 oder höher ausgeführt werden.
    • Azure App Services – ASP.NET Core-Apps, die in .NET Core 2.0 oder höher unter Windows ausgeführt werden.
    • Azure-VMs (und VMSSs) – ASP.NET-Apps, die unter .NET Framework 4.6.1 oder höher ausgeführt werden.
    • Azure-VMs (und VMSSs) – ASP.NET Core-Apps, die in .NET Core 2.0 oder höher unter Windows ausgeführt werden.
    • Azure Kubernetes Services – ASP.NET Core-Apps, die in .NET Core 2.2 oder höher unter Debian 9 ausgeführt werden.
    • Azure Kubernetes Services – ASP.NET Core-Apps, die in .NET Core 2.2 oder höher unter Alpine 3.8 ausgeführt werden.
    • Azure Kubernetes Services – ASP.NET Core-Apps, die in .NET Core 2.2 oder höher unter Ubuntu 18.04 ausgeführt werden.

Problem: Ich sehe nur gedrosselte Momentaufnahmen in den Diagnosetools

Screenshot des gedrosselten Andockpunkts.

Führen Sie die folgenden Schritte aus:

  • Momentaufnahmen beanspruchen wenig Arbeitsspeicher, nutzen aber festgelegten virtuellen Speicher. Wenn der Momentaufnahmedebugger eine hohe Arbeitsspeicherauslastung Ihres Servers erkennt, erstellt er keine Momentaufnahmen. Sie können bereits erfasste Momentaufnahmen löschen, indem Sie die Momentaufnahmedebugger-Sitzung beenden und es erneut versuchen.

Problem: Das Momentaufnahmendebugging mit mehreren Versionen von Visual Studio gibt mir Fehler (Visual Studio 2019 oder höher)

Visual Studio 2019 erfordert eine neuere Version dieser Momentaufnahmedebugger-Websiteerweiterung in Ihrer Azure App Service-Instanz. Diese Version ist nicht mit der älteren Version der Snapshot Debugger-Websiteerweiterung kompatibel, die von Visual Studio 2017 verwendet wird. Sie erhalten die folgende Fehlermeldung, wenn Sie versuchen, den Snapshot-Debugger in Visual Studio 2019 an einen Azure-App-Dienst anzufügen, der zuvor vom Snapshot-Debugger in Visual Studio 2017 gedebuggt wurde:

Screenshot der inkompatiblen Snapshot Debugger-Websiteerweiterung Visual Studio 2019.

Wenn Sie jedoch Visual Studio 2017 verwenden, um den Momentaufnahmedebugger an einen Azure-App Dienst anzufügen, der zuvor vom Snapshot-Debugger in Visual Studio 2019 gedebuggt wurde, wird die folgende Fehlermeldung angezeigt:

Screenshot der inkompatiblen Snapshot Debugger-Websiteerweiterung Visual Studio 2017.

Um dieses Problem zu lösen, löschen Sie die folgenden App-Einstellungen im Azure-Portal, und fügen Sie den Momentaufnahmedebugger erneut an:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problem: Ich füge an das falsche/alte Azure-Ressourcen- oder Speicherkonto an

Führen Sie die folgenden Schritte aus:

Die Einträge „Azure-Ressource“ und „Speicherkonto“ verwenden Ressourcennamen als Schlüssel, sodass Aktionen wie die Migration einer Ressource zu verschiedenen Abonnements Probleme verursachen können. Führen Sie die folgenden Schritte aus, um die Liste zu löschen:

  1. Führen Sie diese Befehle in der Entwickler-Eingabeaufforderung für VS (mit Administratorrechten) aus.

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Löschen Sie alle suo-Dateien , die der Web-App zugeordnet sind.

Problem: Ich habe Probleme beim Debuggen von Momentaufnahmen und muss mehr Protokollierung aktivieren

Aktivieren von Agentprotokollen

Um die Agentprotokollierung zu aktivieren und zu deaktivieren, öffnen Sie Visual Studio, und navigieren Sie zu Tools>Options>Snapshot Debugger>Enable agent logging. Hinweis: Wenn das Löschen alter Agent-Protokolle beim Start der Sitzung ebenfalls aktiviert ist, löscht jede erfolgreiche Visual Studio-Anfügung frühere Agentprotokolle.

Sie finden Agent-Protokolle an den folgenden Speicherorten:

  • App-Dienste:
    • Navigieren Sie zur Kudu-Website Ihres App-Diensts (d. h<. Ihrem App-Dienst).>scm.azurewebsites.net) und navigieren Sie zur Debugkonsole.
    • Agentprotokolle werden im folgenden Verzeichnis gespeichert: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Melden Sie sich bei Ihrem virtuellen Computer an, werden Agentprotokolle wie folgt gespeichert: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Navigieren Sie zum folgenden Verzeichnis: /tmp/diag/AgentLogs/*

Profiler-/Instrumentationsprotokolle aktivieren

Sie finden Die Instrumentationsprotokolle an den folgenden Speicherorten:

  • App-Dienste:
    • Die Fehlerprotokollierung wird automatisch an D:\Home\LogFiles\eventlog.xml gesendet, Ereignisse werden mit <Provider Name="Instrumentation Engine" /> oder "Production Breakpoints" markiert.
  • VM/VMSS:
    • Melden Sie sich bei Ihrem virtuellen Computer an, und öffnen Sie die Ereignisanzeige.
    • Öffnen Sie die folgende Ansicht: Windows-Protokolle>Anwendung.
    • Aktuelles Protokoll filtern nach Ereignisquelle mit entweder Produktionshaltepunkten oder Instrumentation-Engine.
  • AKS
    • Protokollierung des Instrumentierungsmoduls bei /tmp/diag/log.txt (in DockerFile festgelegt MicrosoftInstrumentationEngine_FileLogPath )
    • ProductionBreakpoint-Protokollierung bei /tmp/diag/shLog.txt

Bekannte Probleme

  • Das Momentaufnahmedebugging mit mehreren Visual Studio-Clients für denselben App-Dienst wird derzeit nicht unterstützt.
  • Roslyn IL-Optimierungen werden in ASP.NET Core-Projekten nicht vollständig unterstützt. Für einige ASP.NET Core-Projekte ist es möglicherweise nicht möglich, einige Variablen anzuzeigen oder einige Variablen in bedingten Anweisungen zu verwenden.
  • Spezielle Variablen, z $FUNCTION . B. oder $CALLER, können in bedingten Anweisungen oder Logpoints für ASP.NET Core-Projekte nicht ausgewertet werden.
  • Das Momentaufnahmedebugging funktioniert nicht für App-Dienste, für die das lokale Zwischenspeichern aktiviert ist.
  • Momentaufnahmendebugging-API-Apps werden derzeit nicht unterstützt.

Upgrade der Websiteerweiterung

Debuggen von Momentaufnahmen und Application Insights hängen von einem ICorProfiler ab, der in den Websiteprozess geladen wird und Probleme durch Sperren von Dateien während des Upgrades verursacht. Wir empfehlen diesen Prozess, um sicherzustellen, dass es keine Zeit für Ihre Produktionswebsite gibt.

  • Erstellen Sie einen Bereitstellungsslot in Ihrem App Service, und stellen Sie Ihre Website für den Slot bereit.
  • Tauschen Sie den Slot vom Cloud-Explorer in Visual Studio aus oder über das Azure-Portal mit der Produktion aus.
  • Beenden Sie die Slot-Website. Es dauert ein paar Sekunden, um die Website w3wp.exe Prozess von allen Instanzen zu beenden.
  • Upgraden Sie die Slot-Websiteerweiterung von der Kudu-Website aus oder über das Azure-Portal (App Service-Blatt > Entwicklungstools > Erweiterungen > Update).
  • Starten Sie die Slot-Website. Sie sollten die Website besuchen, um sie wieder zu aktivieren.
  • Tauschen Sie den Slot mit der Produktion aus.

References