Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe von Befehlszeilentools können Sie Leistungsinformationen zu einer Anwendung sammeln. Sie können Leistungsdaten für CPU-Auslastungs-, .NET-Speicherzuweisungs-, Instrumentierungs- und Datenbankabfragen sammeln.
Im in diesem Artikel beschriebenen Beispiel sammeln Sie Leistungsinformationen für Microsoft Notepad, aber dieselbe Methode kann zum Profilieren eines beliebigen Prozesses verwendet werden.
Anmerkung
Informationen zum Generieren einer instrumentierten C/C++-Komponente über die Befehlszeile finden Sie unter Instrument eine systemeigene eigenständige Komponente, bevor Sie die schritte in diesem Artikel ausführen. Für CPU-Nutzungsdaten können Sie die in diesem Artikel beschriebenen Verfahren verwenden.
Voraussetzungen
Visual Studio 2019 oder höher
Vertrautheit mit Befehlszeilentools
Um Leistungsinformationen auf einem Remotecomputer zu sammeln, ohne Visual Studio installiert zu haben, installieren Sie die Remotetools für Visual Studio auf dem Remotecomputer. Die Version der Tools muss ihrer Version von Visual Studio entsprechen.
Die meisten Sammlungs-Agents unterstützen .NET Core, .NET 5+, .NET Framework und C++. Der Support ist jedoch auf die Unterstützung durch das entsprechende Performance-Tool beschränkt. Beispielsweise ist der Database-Sammlungs-Agent auf .NET Core und .NET 5+ beschränkt.
Erfassen von Leistungsdaten
Bei der Profilerstellung mithilfe der CLI-Diagnosetools von Visual Studio wird das Profilerstellungstool zusammen mit einem der Sammlungs-Agents an einen Prozess angefügt. Wenn Sie das Profiling-Tool anfügen, fangen Sie eine Diagnosesitzung an, die Profiling-Daten aufzeichnet und speichert, bis das Tool beendet wird, wobei die Daten in eine .diagsession Datei exportiert werden. Anschließend können Sie diese Datei in Visual Studio öffnen, um Ergebnisse zu analysieren.
Starten Sie den Editor, und öffnen Sie dann den Task-Manager, um die Prozess-ID (PID) abzurufen. Suchen Sie im Task-Manager die PID auf der Registerkarte Details.
Öffnen Sie eine Eingabeaufforderung, und wechseln Sie zum Verzeichnis mit der ausführbaren Datei des Sammlungs-Agents, das sich normalerweise (für Visual Studio Enterprise) hier befindet:
<Visual Studio installation folder>\18\Enterprise\Team Tools\DiagnosticsHub\Collector\<Visual Studio installation folder>\2022\Enterprise\Team Tools\DiagnosticsHub\Collector\Für die Remotetools befindet sich die ausführbare Datei des Sammlungs-Agents an diesem Speicherort:
Program Files\Microsoft Visual Studio 17.0\Team Tools\DiagnosticsHub\Collector\Anmerkung
Wenn Sie die Befehlszeile in Remoteszenarien verwenden, müssen Sie die Befehlszeilenanweisungen auf dem Remotecomputer ausführen. Wenn Sie sich mit der entfernten Maschine von Visual Studio aus verbinden möchten, verwenden Sie stattdessen den Leistungsprofiler in Visual Studio.
Starten Sie VSDiagnostics.exe, indem Sie den folgenden Befehl eingeben.
VSDiagnostics.exe start <id> /attach:<pid> /loadConfig:<configFile>Die Argumente, die eingeschlossen werden müssen, sind:
- < ID> Identifiziert die Erfassungssitzung. Die ID muss eine Zahl zwischen 1 und 255 sein.
- < pid>, PID des Prozesses, den Sie profilieren möchten, in diesem Fall die PID, die Sie in Schritt 1 gefunden haben.
- < configFile>Konfigurationsdatei für den Sammelagent, den Sie starten möchten. Weitere Informationen finden Sie unter Konfigurationsdateien für Agents.
Sie können beispielsweise den folgenden Befehl für den CPUUsageBase-Agent verwenden, indem Sie die pid ersetzen, wie zuvor beschrieben.
VSDiagnostics.exe start 1 /attach:<pid> /loadConfig:AgentConfigs\CPUUsageLow.jsonAlternativ können Sie den Befehl
launchverwenden, um eine ausführbare Datei zu starten. In diesem Szenario müssen Sie die Prozess-ID nicht abrufen und an diese anfügen. Alle Tools unterstützen den Befehllaunch, obwohl einigeattachnicht unterstützen, z. B. das Tool "Instrumentation" und ".NET Allocation". Verwenden Sie beispielsweise Folgendes, um eine ausführbare Datei zu starten und Instrumentierungsdaten zu sammeln:VSDiagnostics start <id> /launch:<ExeToProfile> /loadConfig:AgentConfigs\PerfInstrumentation.jsonÄndern Sie die Größe des Notizblocks, und geben Sie etwas darin ein, um sicherzustellen, dass interessante Informationen zur Profilerstellung gesammelt werden.
Beenden Sie die Sammlungssitzung, und senden Sie die Ausgabe an eine Datei, indem Sie den folgenden Befehl eingeben.
VSDiagnostics.exe stop <id> /output:<path to file>Suchen Sie die Ausgabedatei .diagsession des vorherigen Befehls und öffnen Sie sie in Visual Studio (Datei>Öffnen), um die gesammelten Informationen zu untersuchen.
Informationen zur Analyse der Ergebnisse finden Sie in der Dokumentation für das entsprechende Leistungstool. Dies kann z. B. das CPU-Auslastungstool, .NET Object Allocation Tool, Instrumentationoder das Datenbank- Tool sein.
Agent-Konfigurationsdateien
Sammlungs-Agents sind austauschbare Komponenten, die unterschiedliche Datentypen sammeln, je nachdem, was Sie messen möchten.
Aus Gründen der Einfachheit wird empfohlen, diese Informationen in einer Agentkonfigurationsdatei zu speichern. Die Konfigurationsdatei ist eine .json-Datei, die mindestens den Namen der .dll sowie deren COM-CLSID enthält. Standardmäßig finden Sie die Beispielkonfigurationsdateien im folgenden Ordner:
Program Files\Microsoft Visual Studio\<version>\<sku>\Team Tools\DiagnosticsHub\Collector\AgentConfigs
CpuUsage-Konfigurationen (Base/High/Low) entsprechen den Daten, die für das Profilerstellungstool für die CPU-Auslastung gesammelt wurden. DotNetObjectAlloc-Konfigurationen (Base/Low) entsprechen Daten, die für das .NET Object Allocation Toolgesammelt werden.
Base/Low/High-Konfigurationen beziehen sich auf die Samplingrate. Beispielsweise beträgt "Niedrig" 100 Proben/Sekunde und "High" 4000 Proben/Sekunde.
Damit das tool VSDiagnostics.exe mit einem Sammlungs-Agent arbeiten kann, erfordert es sowohl eine DLL als auch eine COM CLSID für den entsprechenden Agent. Der Agent verfügt möglicherweise auch über zusätzliche Konfigurationsoptionen, bei denen es sich um alle Optionen handelt, die in der Konfigurationsdatei angegeben sind, die als ordnungsgemäß escapefähiges JSON formatiert sind.
Erlaubnisse
Um eine Anwendung zu profilieren, die erhöhte Berechtigungen erfordert, müssen Sie dies über eine Eingabeaufforderung mit erhöhten Rechten tun.