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 Snapshot Debugger 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 ögonblicksbildsfelsökare" påträffar ett HTTP-statuskodfel

Om du ser följande fel i fönstret Utdata 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 det föregående aliaset 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.

Gör så här:

  • Kontrollera att ditt Visual Studio-anpassningskonto har behörighet till den Azure-prenumeration och resurs som du kopplar till. Ett snabbt sätt att avgöra detta är att kontrollera om resursen är tillgänglig i dialogrutan från Felsöka> felsökning avögonblicksbilder...>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) på 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.

Gör så här:

  • Kontrollera att ditt Visual Studio-konto har en giltig Azure-prenumeration med nödvändiga Role-Based Access Control-behörigheter (RBAC) för resursen. För AppService kontrollerar du om du har behörighet att fråga App Service Planera 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.

Gör så här:

  • Kontrollera att en webbplats har distribuerats och körs på den App Service resurs som du kopplar 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 öppnas 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.

Gör så här:

  • 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 bifoga ögonblicksbildfelsökare 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.

Gör så här:

  • 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 – internt serverfel anger att platsen är nere eller att servern inte kan hantera begäran. Snapshot Debugger fungerar bara på program som körs. Application Insights Snapshot Debugger tillhandahåller ö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.

Gör så här:

  • 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 din snappunkt i stället för den vanliga fästpunktsikonen är snappunkten inte aktiverad.

Skärmbild som visar att Snappoint inte aktiveras.

Gör så här:

  • 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 den modul 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.

Gör så här:

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

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

  • 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 symbolfilerna till App Service. Genom att ange symbolcachens katalog kan Visual Studio använda dessa symboler.

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

  • Om din organisation använder en symbolserver eller släpper symboler i en annan sökväg kan du använda 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

Gör så här:

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

  • För Visual Studio 2019 eller senare versioner kontrollerar du att appen stöds:

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

Gör så här:

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

Problem: Ögonblicksbildsfelsökning 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 på din 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 felsökts av felsökningsprogrammet för ögonblicksbilder i Visual Studio 2017:

Skärmbild av inkompatibelt webbplatstillägg för ögonblicksbilder i Visual Studio 2019.

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

Skärmbild av inkompatibelt webbplatstillägg för ögonblicksbildsfelsökning i Visual Studio 2017.

Åtgärda detta genom att ta bort följande appinställningar i Azure Portal och bifoga ögonblicksbildfelsökaren igen:

  • INSTRUMENTATIONENGINE_EXTENSION_VERSION
  • SNAPSHOTDEBUGGER_EXTENSION_VERSION

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

Gör så här:

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. Så här rensar du 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 går till Verktyg Alternativ>>Ögonblicksbildfelsökare>Aktivera agentloggning. Observera att om Ta bort gamla agentloggar vid sessionsstart också är aktiverat tas tidigare agentloggar bort för varje lyckad Visual Studio-bifogad.

Du hittar agentloggar på följande platser:

  • App Services:
    • Gå till din App Service Kudu-webbplats (d.v.s<. dinappservice>).scm.azurewebsites.net) och navigera 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 "Produktions brytpunkter"
  • VM/VMSS:
    • Logga in på den virtuella datorn och öppna Loggboken.
    • Öppna följande vy: Windows Logs>Application.
    • Filtrera aktuell logg efterhändelsekälla med hjälp av 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

  • Ögonblicksbildsfelsökning 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 i App Services som har lokal cachelagring aktiverat.
  • Ögonblicksbildsfelsökning av API Apps stöds inte för närvarande.

Uppgradering av webbplatstillägg

Felsökning av ögonblicksbilder och Application Insights är beroende av 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 har någon stilleståndstid.

  • Skapa ett distributionsfack i App Service och distribuera webbplatsen till facket.
  • Byt plats 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 slot från Kudu-platsen eller Azure Portal (App Service Blade > Development Tools > Extensions > Update).
  • Starta platswebbplatsen. Vi rekommenderar att du besöker platsen för att värma upp den igen.
  • Byt fack med produktion.

Referenser