Behandeln von Profilerstellungsfehlern und Beheben von Problemen

Dieser Artikel enthält Lösungen für einige der häufigsten Fehler, die die Verwendung oder das Abrufen ausreichender Daten aus dem Leistungs-Profiler in Visual Studio verhindern können.

Keine Ergebnisse.

Fehler: „Der aktuelle Filtersatz enthält keine Daten.“

Beim Öffnen einer DIAGSESSION-Datei werden bestimmte Filter angewendet, z. B. zum Ausblenden von nativem Code oder Nichtbenutzercode, um die Ablaufverfolgung verständlicher zu machen. Darüber hinaus gibt es andere Filter, die angewendet werden können, z. B. Zeitauswahl und Thread, die die angezeigten Daten weiter eingrenzen. Wenn diese Filter so angewendet werden, dass keine Daten mehr angezeigt werden können, wird diese Warnung angezeigt.

So behebt man den Fehler

  • Stellen Sie sicher, dass ihre Zeitauswahl Daten enthält. Wenn Sie Ihre Zeitauswahl im Diagramm über den Daten geändert haben, wählen Sie Auswahl löschen aus, um sie zurückzusetzen.
  • Wenn weiterhin keine Daten vorhanden sind, stellen Sie als Nächstes sicher, dass alle Kategorien und Threads in ihren jeweiligen Dropdownlisten aktiviert sind.
  • Wenn die Anwendung, für die Sie ein Profi erstellen, nativer Code ist, aktivieren Sie die Option Nativen Code anzeigen in der Dropdownliste Einstellungen.
  • Wenn Sie immer noch keine Daten haben, war die von Ihnen erfasste Ablaufverfolgung wahrscheinlich zu kurz, als dass Daten vorliegen können. Stellen Sie sicher, dass das Programm, für das Sie Daten sammeln, nicht zu schnell abgeschlossen wird (weniger als eine Sekunde).

Siehe auch: Externen Code anzeigen

Es dauert lange, bis die Ergebnisse abgeschlossen sind

Wenn die Analyse des Heaps nach der Sammlung anscheinend langsam geladen wird, sehen Sie sich die folgenden möglichen Lösungen an, mit denen Wartezeitprobleme behoben werden können.

Beheben des Fehlers Manchmal kann es länger dauern, wenn versucht wird, Momentaufnahmen aus speicherintensiven Anwendungen zu analysieren, aber ein Upgrade auf eine neuere Version von Visual Studio sollte die Wartezeit für die Analyse verkürzen. Wenn dieses Problem nach dem Upgrade noch auftritt, liegt möglicherweise ein Leistungsfehler des Tools vor. Erstellen Sie ein Feedbackticket, und teilen Sie die erstellte DIAGSESSION-Datei. Mit der Datei können wir ermitteln, warum die Daten langsam analysiert werden, und wo wir Leistungsverbesserungen vornehmen können.

Stellen Sie sicher, dass Sie im Feedbackticket eine Ablaufverfolgungs- und Heap-Abbilddateien bereitstellen.

Weitere Informationen:

Fehler: „Für diese DIAGSESSION konnte keine Manifestdatei erstellt werden“ oder „Fehler: Manifestdatei für DIAGSESSION konnte nicht erstellt werden, Visual Studio kann diese Sitzung nicht erneut öffnen."

Dieses Problem weist darauf hin, dass beim Vorbereiten der Arbeitsspeichermomentaufnahme-Daten, die analysiert und angezeigt werden sollen, ein Problem aufgetreten ist, nachdem das Sammeln von Daten beendet wurde. Es gibt mehrere mögliche Ursachen für das Auftreten des Problems, von einem Fehler beim Abrufen der richtigen Informationen von den Sammlungs-Agents bis hin zur tatsächlichen Datenverarbeitung. Daher ist es nicht möglich, das Problem ohne weitere Protokollierung zu diagnostizieren.

Beheben des Fehlers Antworten Sie auf Ihr Feedbackticket mit zusätzlichen Protokollierungsinformationen, damit wir das Problem diagnostizieren können. Sie können die Protokollinformationen abrufen, indem Sie die folgenden Befehle an einer Eingabeaufforderung mit erhöhten Rechten ausführen:

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

Nachdem Sie diese Befehle ausgeführt haben, starten Sie Visual Studio, reproduzieren Sie Ihr Szenario, schließen Sie Visual Studio, zippen Sie dann das ausgewählte DiagnosticsHub-Protokollverzeichnis, und fügen Sie es diesem Ticket an. Ab diesem Punkt sollten wir in der Lage sein, das Geschehen besser zu diagnostizieren.

Führen Sie nach dem Hinzufügen des Protokolls zu Ihrem Ticket die folgenden Befehle aus, um die Protokollierung zu deaktivieren:

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

Fehler: „Quellinformationen sind nicht verfügbar.“

Um Quellinformationen anzeigen zu können, müssen Ihnen PDBs vom Zeitpunkt der Sammlung zur Verfügung stehen. Wenn Sie also beispielsweise eine CPU-Auslastungs-DIAGSESSION-Datei sammeln, einige Änderungen am Code vornehmen, neu kompilieren (was die alte PBD ersetzt), und dann die DIAGSESSION-Datei erneut öffnen, werden Sie wahrscheinlich nicht in der Lage sein, Quellinformationen für die Module Ihres Codes anzuzeigen, die Sie aktualisiert haben.

Beheben des Fehlers Die einfachste Problemumgehung ist, nach dem Vornehmen von Änderungen eine neue diagsession zu sammeln. Auf diese Weise können Sie sicher sein, dass Ihre PDBs auf dem neuesten Stand sind.

Fehler: „Fehler bei der Speicheranalyse aufgrund eines internen Fehlers.“

Nach einer langen Sitzung zur Arbeitsspeicherprofilerstellung wird bei jedem Versuch, das Ergebnis zu analysieren, der Fehler angezeigt.

Zwischen den Momentaufnahmeninformationen, die vom Speichertool erfasst wurden, und denen des Sammlungs-Agents war ein Konflikt aufgetreten. Dies bedeutet, dass das Speichertool die Heapstatusdatei für eine native Momentaufnahme nicht finden konnte. Alternativ konnte das Speichertool die GC-Startzeit der Momentaufnahme nicht mit der in der DIAGSESSION-Datei registrierten Zeit abgleichen, um die GCStats abzurufen.

Beheben des Fehlers Dieses Problem war auf einen Fehler im Tool zurückzuführen, der in Version 17.3 behoben wurde. Ein Upgrade auf eine höhere Version dürfte das Problem beheben. Wenn das Problem nach dem Upgrade weiterhin besteht, erstellen Sie ein Feedbackticket, und fügen Sie dem Ticket Folgendes an:

  • Die DIAGSESSION-Datei
  • Einen Minidump von Visual Studio
  • Einen Screenshot der Speichermomentaufnahmen, die erstellt wurden.

Es gibt keine Problemumgehung für dieses Problem, und die Profilerstellungssitzung muss neu gestartet werden.

Fehler: „X Diagnoseereignisse gelöscht. Möglicherweise fehlen einige Informationen im Bericht oder sind ungenau.“

Manchmal können bei der Datenerfassung Ereignisse verworfen werden, die dazu führen können, dass der resultierende Profilerstellungsbericht ungenau oder unbrauchbar ist. Verworfene Ereignisse können aus vielen verschiedenen Gründen auftreten, vor allem aber dann, wenn das System nicht in der Lage ist, Ereignisse schneller auf den Datenträger zu leeren als sie eingehen.

Behebung Um die Anzahl der verworfenen Ereignisse zu verringern, können Sie andere Datenträger- und CPU-intensive Vorgänge während der Profilerstellung schließen. Wenn Sie diese Vorgänge schließen, kann das System mehr Ressourcen für das Leeren der eingehenden Ereignisse verwenden. Sie können auch versuchen, die Häufigkeit der Stichprobenentnahme der Tools zu reduzieren, die diese Konfigurationseinstellungen unterstützen, z. B. die Tools „CPU-Auslastung“ und „.NET-Zuteilung“, und so den Mehraufwand reduzieren.

Fehler: ETW-Ressourcen wurden erschöpft

Der Visual Studio-Profiler verwendet die Ereignisablaufverfolgung für Windows (ETW), um seine Leistungsinformationen zu sammeln. Eine begrenzte Anzahl von ETW-Sitzungen ist zur Verwendung auf einem System verfügbar sind, und wenn alle Sitzungen bereits verwendet werden, erhalten Sie folgende Fehlermeldung: ETW resources have been exhausted. Diese Sitzungen werden von anderen Programmen wie der SysInternals-Tools-Suite, anderen Profilern und anderen Diagnosetools verwendet. Sie können dieses Problem wie folgt beheben:

  • Schließen der Programme, die die Sitzungen verwenden, um Ressourcen freizugeben, oder

  • Beiseitelegen weiterer Ressourcen, indem Sie Folgendes an einer Eingabeaufforderung mit erhöhten Rechten ausführen und dann neu starten:

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

    Durch Ausführen dieses Befehls wird die Standardanzahl von 64 auf 128 Sitzungen erhöht (256 ist die maximale Anzahl von Sitzungen, die auf einem System zulässig sind).

Fehler: CPU-Auslastungstool funktioniert nicht auf ARM64 VM

Der Visual Studio-Profiler verwendet die Ereignisablaufverfolgung für Windows (ETW), um seine Leistungsinformationen zu sammeln. Derzeit wird das Sammeln von Profilbeispielen mit ETW unter Windows für ARM64 nicht unterstützt, wenn es auf einem virtuellen Computer (VM) ausgeführt wird. Um diese Einschränkung zu umgehen, können Sie entweder das CPU-Auslastungstool auf einem tatsächlichen ARM64-Gerät verwenden oder das Instrumentierungstool verwenden, um Zeitinformationen zu erfassen.

Fehler: Das Tool für Arbeitsspeicherauslastung funktioniert nicht unter .NET 7 und .NET Runtime 8.0.0 und 8.0.1, wenn Server-GC aktiviert ist

Aufgrund eines Problems, das mit der .NET 7-Runtime aufgekommen und in den .NET 8-Runtimeversionen 8.0.0 und 8.0.1 immer noch vorhanden ist, ist es nicht möglich, Objekte bei Verwendung der Server-Garbage-Collection aufzuzählen. Die Server-Garbage-Collection ist standardmäßig für ASP.NET Core-Anwendungen aktiviert.

So behebt man den Fehler

So umgehen Sie dieses Problem:

  • Deaktivieren Sie die Server-Garbage-Collection, wenn Sie eine Momentaufnahme erstellen oder ein Abbild Ihrer Anwendung erfassen.
  • Verwenden Sie eine nicht betroffene Version der .NET-Runtime.

Weitere Informationen: