Dela via


Felsökning och kända problem med felsökning av ögonblicksbilder i Visual Studio

Gäller för: Visual Studio

Den här artikeln innehåller lösningar på vanliga problem som kan uppstå när du felsöker en Azure-app med Felsökning av ögonblicksbilder i Visual Studio.

Om stegen som beskrivs i den här artikeln inte löser problemet kan du söka efter problemet i utvecklarcommunityn eller rapportera ett nytt problem genom att välja Hjälp>skicka feedbackrapport>ett problem i Visual Studio.

Problem: "Bifoga felsökningsprogram för ögonblicksbilder" stöter på ett HTTP-statuskodfel

Om du ser följande fel i utdatafönstret under anslutningsförsöket kan det vara ett känt problem som anges i följande avsnitt. Prova de föreslagna lösningarna och kontakta föregående alias om problemet kvarstår.

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

(401) Obehörig

Det här felet anger att REST-anropet som utfärdats av Visual Studio till Azure använder en ogiltig autentiseringsuppgift.

Ta dessa steg:

  • Kontrollera att ditt Visual Studio-anpassningskonto har behörighet till den Azure-prenumeration och resurs som du ansluter till. Ett snabbt sätt att avgöra detta är att kontrollera om resursen är tillgänglig i dialogrutan från Felsökning>av felsökning av felsökning av ögonblicksbildsfelsökning...>Azure-resurs>Välj befintlig eller i Cloud Explorer.
  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

Om du har aktiverat autentisering/auktorisering (EasyAuth) i Din App Service kan det uppstå ett 401-fel med LaunchAgentAsync i felmeddelandet för anropsstacken. Se till att åtgärden som ska vidtas när begäran inte autentiseras är inställd på Tillåt anonyma begäranden (ingen åtgärd) i Azure Portal och ange en authorization.json i D:\Home\sites\wwwroot med följande innehåll i stället.

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

Den första vägen skyddar appdomänen på ett effektivt sätt som liknar Logga in med [IdentityProvider]. Den andra vägen exponerar SnapshotDebugger AgentLaunch-slutpunkten utanför autentiseringen, som utför den fördefinierade åtgärden att starta diagnostikagenten SnapshotDebugger endast om det förinstallerade webbplatstillägget SnapshotDebugger är aktiverat för apptjänsten. Mer information om konfigurationen av authorization.json finns i Auktoriseringsregler för URL.

(403) Förbjudet

Felet 403 – Förbjudet anger att behörighet nekas. Många olika scenarier kan orsaka det här felet.

Ta dessa steg:

  • Kontrollera att ditt Visual Studio-konto har en giltig Azure-prenumeration med nödvändiga RBAC-behörigheter (Rollbaserad åtkomstkontroll) för resursen. För AppService kontrollerar du om du har behörighet att köra frågor mot App Service-planen som är värd för din app.
  • Kontrollera att tidsstämpeln för klientdatorn är korrekt och uppdaterad. Servrar med tidsstämplar inaktiverade med mer än 15 minuter av tidsstämpeln för begäran genererar vanligtvis det här felet.
  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

(404) Hittades inte

Felet 404 – Hittades inte anger att webbplatsen inte kunde hittas på servern.

Ta dessa steg:

  • Kontrollera att en webbplats har distribuerats och körs på den App Service-resurs som du ansluter till.
  • Kontrollera att webbplatsen är tillgänglig på https://< resource.azurewebsites.net>
  • Kontrollera att det anpassade webbprogrammet som körs korrekt inte returnerar statuskoden 404 när den används på https:// resource.azurewebsites.net>.<
  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

(406) Inte acceptabelt

Felet 406 – Inte acceptabelt anger att servern inte kan svara på den typ som angetts i begärans accepthuvud.

Ta dessa steg:

  • Kontrollera att webbplatsen är tillgänglig på https:// resource.azurewebsites.net>.<
  • Kontrollera att webbplatsen inte har migrerats till nya instanser. Snapshot Debugger använder begreppet ARRAffinity för routningsbegäranden till specifika instanser som kan generera det här felet tillfälligt.
  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

(409) Konflikt

Felet 409 – Konflikt anger att begäran står i konflikt med det aktuella servertillståndet.

Det här är ett känt problem som uppstår när en användare försöker koppla ögonblicksbildsfelsökaren mot en AppService som har aktiverat ApplicationInsights. ApplicationInsights ställer in AppSettings med ett annat hölje än Visual Studio, vilket orsakar det här problemet.

Vi har löst detta i Visual Studio 2019.

Ta dessa steg:

  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

(500) Internt serverfel

Felet 500 – intern server anger att platsen är nere eller att servern inte kan hantera begäran. Felsökningsprogram för ögonblicksbilder fungerar bara i program som körs. Application Insights Snapshot Debugger ger ögonblicksbilder av undantag och kan vara det bästa verktyget för dina behov.

(502) Felaktig gateway

Felet 502 – Felaktig gateway indikerar ett nätverksproblem på serversidan och kan vara tillfälligt.

Ta dessa steg:

  • Försök att vänta några minuter innan du ansluter felsökningsprogrammet för ögonblicksbilder igen.
  • Om det här felet kvarstår använder du någon av de feedbackkanaler som beskrivs i början av den här artikeln.

Problem: Snappoint är inte aktiverat

Om du ser en varningsikon med snappunkten i stället för den vanliga fästpunktsikonen är snappunkten inte aktiverad.

Skärmbild som visar att Snappoint inte aktiveras.

Ta dessa steg:

  • Se till att du använder samma version av källkoden för att skapa och distribuera din app.
  • Kontrollera att du läser in rätt symboler för distributionen.
  • Det gör du genom att visa fönstret Moduler under felsökning av ögonblicksbilder och kontrollera att kolumnen Symbolfil visar en .pdb-fil som lästs in för modulen som du felsöker.
    • Felsökningsprogrammet för ögonblicksbilder försöker automatiskt ladda ned och använda symboler för distributionen.

Problem: Symboler läses inte in när jag öppnar en ögonblicksbild

Om du ser följande fönster lästes inte symbolerna in.

Skärmbild som visar att symbolerna inte läses in.

Ta dessa steg:

  • Välj Ändra symbolinställningar... på sidan.

  • I inställningarna för felsökningssymbol > lägger du till en katalog för symbolcache.

  • Starta om felsökning av ögonblicksbilder när symbolsökvägen har angetts.

    Symbolerna, eller .pdb-filerna , som är tillgängliga i projektet måste matcha din App Service-distribution. De flesta distributioner (distribution via Visual Studio, CI/CD med Azure Pipelines eller Kudu osv.) publicerar dina symbolfiler till Din App Service. Om du anger cachekatalogen för symbolen kan Visual Studio använda dessa symboler.

    Skärmbild som visar inställningarna för symboler.

  • Om din organisation använder en symbolserver eller släpper symboler i en annan sökväg använder du symbolinställningarna för att läsa in rätt symboler för distributionen.

Problem: Jag kan inte se alternativet "Bifoga ögonblicksbildsfelsökare" i Cloud Explorer

Ta dessa steg:

  • Kontrollera att komponenten Snapshot Debugger är installerad. Öppna Installationsprogrammet för Visual Studio och kontrollera komponenten Snapshot Debugger i Azure-arbetsbelastningen.

  • Kontrollera att appen stöds för Visual Studio 2019 eller senare versioner:

    • Azure App Services – ASP.NET program som körs på .NET Framework 4.6.1 eller senare.
    • Azure App Services – ASP.NET Core-program som körs på .NET Core 2.0 eller senare i Windows.
    • Azure Virtual Machines (och VM-skalningsuppsättning) – ASP.NET program som körs på .NET Framework 4.6.1 eller senare.
    • Azure Virtual Machines (och VM-skalningsuppsättning) – ASP.NET Core-program som körs på .NET Core 2.0 eller senare i Windows.
    • Azure Kubernetes Services – ASP.NET Core-program som körs på .NET Core 2.2 eller senare på Debian 9.
    • Azure Kubernetes Services – ASP.NET Core-program som körs på .NET Core 2.2 eller senare på Alpine 3.8.
    • Azure Kubernetes Services – ASP.NET Core-program som körs på .NET Core 2.2 eller senare på Ubuntu 18.04.

Problem: Jag ser bara begränsade ögonblicksbilder i diagnostikverktygen

Skärmbild som visar begränsad snappunkt.

Ta dessa steg:

  • Ögonblicksbilder tar upp lite minne men har en incheckningsavgift. Om felsökningsprogrammet för ögonblicksbilder upptäcker att servern har hög minnesbelastning kommer den inte att ta ögonblicksbilder. Du kan ta bort redan insamlade ögonblicksbilder genom att stoppa ögonblicksbildens felsökningssession och försöka igen.

Problem: Felsökning av ögonblicksbilder med flera versioner av Visual Studio ger mig fel (Visual Studio 2019 eller senare versioner)

Visual Studio 2019 kräver en nyare version av webbplatstillägget snapshot debugger i Azure App Service. Den här versionen är inte kompatibel med den äldre versionen av webbplatstillägget snapshot debugger som används av Visual Studio 2017. Du får följande fel om du försöker koppla felsökningsprogrammet för ögonblicksbilder i Visual Studio 2019 till en Azure App Service som tidigare har debuggats av felsökningsprogrammet för ögonblicksbilder i Visual Studio 2017:

Skärmbild av webbplatstillägget Visual Studio 2019 för inkompatibel ögonblicksbildsfelsökare.

Om du använder Visual Studio 2017 för att koppla felsökningsprogrammet för ögonblicksbilder till en Azure App Service som tidigare har debuggats av felsökningsprogrammet för ögonblicksbilder i Visual Studio 2019 får du följande fel:

Skärmbild av det inkompatibla webbplatstillägget för ögonblicksbildsfelsökaren Visual Studio 2017.

Åtgärda detta genom att ta bort följande appinställningar i Azure Portal och bifoga felsökningsprogrammet för ögonblicksbilder igen:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

Problem: Jag ansluter till fel/gammal Azure-resurs eller lagringskonto

Ta dessa steg:

Posterna "Azure-resurs" och "Lagringskonto" använder resursnamn som nycklar så att åtgärder som att migrera en resurs till olika prenumerationer kan orsaka problem. Gör så här för att rensa listan:

  1. Kör dessa kommandon i kommandotolken Utvecklare för VS (med administratörsbehörighet).

    vsregedit remove local HKCU SnapshotDebugger AzureResourcesMRU
    vsregedit remove local HKCU SnapshotDebugger StorageAccountsMRU
    
  2. Ta bort alla .suo-filer som är associerade med webbappen.

Problem: Jag har problem med felsökning av ögonblicksbilder och jag behöver aktivera mer loggning

Aktivera agentloggar

Om du vill aktivera och inaktivera agentloggning öppnar du Visual Studio och navigerar till Verktygsalternativ>>Ögonblicksbildfelsökare>Aktivera agentloggning. Observera att om Ta bort gamla agentloggar vid sessionsstart också är aktiverat, kommer varje lyckad Visual Studio-bifogande att ta bort tidigare agentloggar.

Du hittar agentloggar på följande platser:

  • App Services:
    • Gå till Din App Services Kudu-webbplats (dvs<. dinappservice).>scm.azurewebsites.net) och gå till Felsökningskonsolen.
    • Agentloggar lagras i följande katalog: D:\home\LogFiles\SiteExtensions\DiagnosticsAgentLogs\.
  • VM/VMSS:
    • Logga in på den virtuella datorn, agentloggar lagras på följande sätt: C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.Diagnostics.IaaSDiagnostics<Version>\SnapshotDebuggerAgent*.txt_
  • AKS
    • Gå till följande katalog: /tmp/diag/AgentLogs/*

Aktivera Profiler-/instrumentationsloggar

Du hittar Instrumentationsloggar på följande platser:

  • App Services:
    • Felloggning skickas automatiskt till D:\Home\LogFiles\eventlog.xml, händelser markeras med <Provider Name="Instrumentation Engine" /> eller "Produktionsbrytpunkter"
  • VM/VMSS:
    • Logga in på den virtuella datorn och öppna Loggboken.
    • Öppna följande vy: Program för Windows-loggar>.
    • Filtrera aktuell logg efter händelsekälla med antingen produktionsbrytpunkter eller instrumentationsmotor.
  • AKS
    • Loggning av instrumentationsmotor vid /tmp/diag/log.txt (anges MicrosoftInstrumentationEngine_FileLogPath i DockerFile)
    • ProductionBreakpoint-loggning vid /tmp/diag/shLog.txt

Kända problem

  • Felsökning av ögonblicksbilder med flera Visual Studio-klienter mot samma App Service stöds inte för närvarande.
  • Roslyn IL-optimeringar stöds inte fullt ut i ASP.NET Core-projekt. För vissa ASP.NET Core-projekt kanske du inte kan se vissa variabler eller använda vissa variabler i villkorsstyrda instruktioner.
  • Särskilda variabler, till exempel $FUNCTION eller $CALLER, kan inte utvärderas i villkorssatser eller loggpunkter för ASP.NET Core-projekt.
  • Felsökning av ögonblicksbilder fungerar inte på App Services som har lokal cachelagring aktiverat.
  • API Apps för felsökning av ögonblicksbilder stöds inte för närvarande.

Uppgradering av webbplatstillägg

Felsökning av ögonblicksbilder och Application Insights beror på en ICorProfiler som läses in i platsprocessen och orsakar problem med fillåsning under uppgraderingen. Vi rekommenderar den här processen för att säkerställa att produktionsplatsen inte är stilleståndstid.

  • Skapa ett distributionsfack i Din App Service och distribuera din webbplats till facket.
  • Växla facket med produktion från Cloud Explorer i Visual Studio eller från Azure Portal.
  • Stoppa platswebbplatsen. Det tar några sekunder att ta bort platsen w3wp.exe processen från alla instanser.
  • Uppgradera platstillägget för fack från Kudu-webbplatsen eller Azure Portal (App Service Blade > Development Tools > Extensions > Update).
  • Starta platswebbplatsen. Vi rekommenderar att du besöker webbplatsen för att värma upp den igen.
  • Byt fack med produktion.

Referenser