Dela via


Felsöka profileringsfel och åtgärda problem

Den här artikeln innehåller lösningar på några av de vanligaste felen som kan förhindra att du använder eller hämtar tillräckligt med data från Prestandaprofiler i Visual Studio.

Inga resultat

Fel: "Det finns inga data i den aktuella uppsättningen filter"

När du öppnar en diagsessionsfil används vissa filter, till exempel att dölja inbyggd kod eller dölja icke-användarkod för att göra spårningen lättare att förstå. Dessutom finns det andra filter som kan användas, till exempel tidsval och tråd, vilket ytterligare begränsar de data som visas. Om dessa filter tillämpas på ett sätt som inte finns några data kvar att visa visas visas den här varningen.

Så här åtgärdar du

  • Se till att tidsvalet innehåller data. Om du har ändrat tidsmarkeringen i diagrammet ovanför data väljer du Rensa markering för att återställa den.
  • Om det fortfarande inte finns några data kontrollerar du sedan att alla kategorier och trådar är aktiverade i respektive listruta.
  • Om det program som du profilerar är inbyggd kod måste du aktivera alternativet Visa intern kod i listrutan Inställningar .
  • Om du fortfarande inte har några data var spårningen som du samlade in förmodligen för kort för att några data skulle finnas. Kontrollera att programmet som du samlar in data för inte slutförs för snabbt (mindre än en sekund).

Se även: Visa extern kod

Det tar lång tid för resultaten att slutföras

Om det verkar långsamt att analysera heapen efter samlingen kan du läsa följande möjliga lösningar som kan hjälpa dig att lösa problem med väntetiden.

Så här åtgärdar du Ibland kan det ta längre tid att analysera ögonblicksbilder från minnesintensiva program, men om du uppgraderar till en senare version av Visual Studio bör du minska analysväntetiden. Om det här problemet är beständigt efter uppgraderingen kan det finnas ett prestandafel på verktyget. Skapa en feedbackbegäran och dela diagsessionsfilen som skapades. Med filen kan vi avgöra varför data är långsamma att analysera och hitta var vi kan göra prestandaförbättringar.

Se till att ange en spårnings- och heap-dumpfil i feedbackbegäran.

Se även:

Felet "Det gick inte att skapa en manifestfil för den här diagsessionen" eller "felet kunde inte skapa manifestfilen för diagsession, Visual Studio kan inte öppna sessionen igen.".

Det här problemet innebär att det uppstod ett problem när minnesögonblicksdata skulle analyseras och visas efter att data har stoppats. Det finns flera möjliga orsaker till att problemet visas, från att det inte gick att hämta rätt information från samlingsagenterna till den faktiska databehandlingen. Därför går det inte att diagnostisera vad problemet är utan ytterligare loggning.

Så här åtgärdar du Svara på feedbackbegäran med ytterligare loggningsinformation så att vi kan diagnostisera problemet. Du kan hämta logginformationen genom att köra följande kommandon från en upphöjd kommandotolk:

reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogLevel /t REG_SZ /d All /reg:32
reg add HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /v LogDirectory /t REG_SZ /d [directory of your choice] /reg:32

När du har kört de här kommandona startar du Visual Studio, återskapar ditt scenario, stänger Visual Studio och zippar sedan upp den valda diagnostikhub-loggkatalogen och kopplar den till den här biljetten. Från och med då bör vi kunna diagnostisera vad som händer bättre.

När du har lagt till loggen i ditt ärende kör du dessa kommandon för att inaktivera loggning:

reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogLevel /reg:32
reg delete HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\DiagnosticsHub /f /v LogDirectory /reg:32

Fel: "Källinformationen är inte tillgänglig."

För att kunna visa källinformation måste du ha pdf-filer tillgängliga från tidpunkten för samlingen. Om du till exempel samlar in en diagsessionsfil för cpu-användning, gör några ändringar i koden, kompilera om (som ersätter den gamla PBD:en) och sedan öppna .diagsessionen igen, skulle du förmodligen inte kunna se källinformation för modulerna i koden som du uppdaterade.

Så här åtgärdar du Den enklaste lösningen för det här problemet är att samla in en ny diagsession när du har gjort ändringar. På så sätt kan du vara säker på att dina PDF-filer är uppdaterade.

Fel: "Minnesanalysen misslyckades på grund av ett internt fel."

Efter en lång minnesprofileringssession möts alla försök att analysera resultatet med felet.

Det uppstod ett matchningsfel mellan den ögonblicksbildsinformation som hämtades av minnesverktyget och samlingsagentens. Det här resultatet innebär att minnesverktyget inte kunde hitta heap-tillståndsfilen för en intern ögonblicksbild. Eller det här resultatet att minnesverktyget inte kunde matcha GC-starttiden för ögonblicksbilden med den som registrerats i diagsessionsfilen för att hämta GCStats.

Så här åtgärdar du Det här problemet berodde på en bugg i verktyget som har åtgärdats i Visual Studio 2022 version 17.3. Du bör lösa problemet genom att uppgradera till en senare version. Om problemet fortfarande är beständiga efter uppgraderingen skapar du en feedbackbegäran och bifogar till biljetten:

  • Diagsession-filen
  • En minidump av Visual Studio
  • En skärmbild av minnesögonblicksbilderna som togs.

Det finns ingen lösning på det här problemet och profileringssessionen måste startas om.

Fel: "X-diagnostikhändelser har släppts, viss information i rapporten kan saknas eller vara felaktig"

Ibland under datainsamlingen kan händelser tas bort som kan göra att den resulterande profileringsrapporten blir felaktig eller oanvändbar. Borttagna händelser kan inträffa av många olika orsaker, men det inträffar främst när systemet inte kan rensa ut händelser till disken snabbare än den inkommande hastigheten.

Så här åtgärdar du För att minska antalet borttagna händelser kan du stänga andra disk- och CPU-intensiva åtgärder vid profilering. Genom att stänga dessa åtgärder kan systemet ägna mer resurser åt att rensa inkommande händelser. Du kan också prova att minska samplingsfrekvenserna för de verktyg som stöder dessa konfigurationsinställningar, till exempel verktyget CPU-användning och .NET-allokeringsverktyget, och därmed minska kostnaderna.

Fel: ETW-resurser har uttömts

Visual Studio-profileraren använder Händelsespårning för Windows (ETW) för att samla in sin prestandainformation. Det finns ett begränsat antal ETW-sessioner som är tillgängliga för användning i ett system och om alla sessioner redan används får du följande fel: ETW resources have been exhausted. Dessa sessioner används av andra program, till exempel SysInternals-paketet med verktyg, andra profilerare och andra diagnostikverktyg. Du kan lösa det här problemet genom att antingen:

  • Stänga de program som använder sessionerna för att frigöra resurser, eller

  • Om du avsätter fler resurser genom att köra följande från en upphöjd kommandotolk och sedan starta om:

    reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\WMI" /v EtwMaxLoggers /t REG_DWORD /d 128
    

    Om du kör det här kommandot ökar standardantalet sessioner från 64 till 128 (256 är det maximala antalet sessioner som tillåts i ett system).

Fel: Processoranvändningsverktyget fungerar inte på den virtuella ARM64-datorn

Visual Studio-profileraren använder Händelsespårning för Windows (ETW) för att samla in sin prestandainformation. För närvarande stöds inte insamling av profilexempel med ETW i Windows för ARM64 när du kör på en virtuell dator (VM). Om du vill kringgå den här begränsningen kan du antingen använda verktyget CPU-användning på en faktisk ARM64-enhet eller använda verktyget Instrumentation för att samla in tidsinformation.

Fel: Minnesanvändningsverktyget fungerar inte på .NET 7 och .NET Runtime 8.0.0-8.0.1 med Server GC aktiverat

På grund av ett problem som introducerades med .NET 7-körningen och sprids till .NET 8-körningsversionerna 8.0.0 och 8.0.1 går det inte att räkna upp objekt när du använder skräpinsamling för servern. Serverns skräpinsamling är aktiverad som standard för ASP.NET Core-program.

Så här åtgärdar du

Så här kan du lösa problemet:

  • Inaktivera skräpinsamling för servern när du tar en ögonblicksbild eller samlar in en dump av ditt program.
  • Använd en opåverkad version av .NET Runtime.

Se även: