Verwenden des eigenständigen IntelliTrace-Collectors (C#, Visual Basic)
Mit dem eigenständigen IntelliTrace Collector können Sie IntelliTrace-Diagnosedaten für Ihre Anwendungen auf Produktionsservern oder anderen Umgebungen erfassen, ohne Visual Studio auf dem Zielcomputer zu installieren oder Änderungen an der Zielsystemumgebung vorzunehmen. Die eigenständige IntelliTrace Collector kann für Web-, SharePoint-, WPF- und Windows Forms-Webanwendungen verwendet werden. Nachdem die Daten gesammelt wurden, kann der Collector mit einem Löschvorgang deinstalliert werden.
Hinweis
Empfohlene Ansätze zum Diagnostizieren von Problemen auf Produktionsservern finden Sie unter Diagnose von Problemen nach der Bereitstellung.
Anforderungen
.NET Framework 3.5 oder höher
Visual Studio Enterprise (nicht Professional oder Community Editions) auf einem Entwicklungscomputer oder einem anderen Computer zum Öffnen von ITRACE-Dateien
Hinweis
Achten Sie darauf, die Symboldateien (.pdb) zu speichern. Um mit IntelliTrace debuggen und Code schrittweise ausführen zu können, müssen Sie über die entsprechenden Quelldateien und Symboldateien verfügen. Siehe Diagnostizieren von Problemen nach der Bereitstellung.
FAQ
Wie kann ich möglichst viele Daten abrufen, ohne die App zu verlangsamen?
Welche Apps arbeiten mit dem Collector?
Auf Internetinformationsdienste (IIS) Version 7.0, 7.5, 8.0, 12.0 und 16.0 gehostete ASP.NET-Webanwendungen
SharePoint 2010- und SharePoint 2013-Anwendungen
Windows Presentation Foundation (WPF) und Windows Forms-Anwendungen.
Wie fange ich an?
Installieren von Collector
Erstellen Sie das Collector-Verzeichnis auf dem Server der App, beispielsweise: C:\IntelliTraceCollector
Rufen Sie den Collector aus dem Visual Studio-Installationsordner ab.
Kopieren Sie „IntelliTraceCollection.cab“ aus dem Ordner, in dem der Collector installiert ist, z. B.:
..\Microsoft Visual Studio\2022\Enterprise\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace
oder für frühere Versionen von Visual Studio:
..\Microsoft Visual Studio 12.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\12.0.0
Legen Sie „IntelliTraceCollection.cab“ im Collector-Verzeichnis ab, beispielsweise: C:\IntelliTraceCollector
Erweitern Sie die Datei "IntelliTraceCollection.cab":
Öffnen Sie auf dem Server der App ein Eingabeaufforderungsfenster als Administrator.
Wechseln Sie zum Collector-Verzeichnis, beispielsweise: C:\IntelliTraceCollector
Verwenden Sie den Befehl expand , einschließlich des Punkts ( . ) am Ende, zum Erweitern der IntelliTraceCollection.cab-Datei:
expand /f:* IntelliTraceCollection.cab .
Hinweis
Durch den Punkt ( . ) werden die Unterordner mit den lokalisierten Auflistungsplänen beibehalten.
Berechtigungen für das Sammlungsverzeichnis
Öffnen Sie auf dem Server der App ein Eingabeaufforderungsfenster als Administrator.
Verwenden Sie den Windows-Befehl icacls , um dem Serveradministrator vollständige Berechtigungen für das Collector-Verzeichnis einzuräumen. Zum Beispiel:
icacls "C:\IntelliTraceCollector" /grant "
<Domain\AdministratorID>":F
So sammeln Sie Daten für eine Web App oder eine SharePoint-Anwendung:
Räumen Sie der Person, die die IntelliTrace-PowerShell-Cmdlets ausführen soll, vollständige Berechtigungen für das Collector-Verzeichnis ein.
Zum Beispiel:
icacls "C:\IntelliTraceCollector" /grant "
<Domain\UserID>":F
Räumen Sie dem Anwendungspool für die Webanwendung oder SharePoint-Anwendung Lese-/Schreib-Berechtigungen für das Collector-Verzeichnis ein.
Zum Beispiel:
Für eine Web App im DefaultAppPool -Anwendungspool:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
Für eine SharePoint-Anwendung im SharePoint - 80 -Anwendungspool:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
IntelliTrace-PowerShell-Cmdlets installieren, um Daten für Webapps oder SharePoint-Anwendungen zu sammeln
Stellen Sie sicher, dass PowerShell auf dem Server der App aktiviert ist. Bei den meisten Versionen von Windows Server, können Sie diese Funktion im Server-Manager -Verwaltungsprogramm hinzufügen.
Installieren Sie die IntelliTrace-PowerShell-cmdlets.
Öffnen Sie ein PowerShell-Befehlsfenster als Administrator.
Wählen Sie Start, Alle Programme, Zubehör, Windows PowerShellaus.
Wählen Sie einen der folgenden Schritte aus:
Unter 64-Bit-Betriebssystemen: öffnen Sie das Kontextmenü für Windows PowerShell. Wählen Sie Als Administrator ausführen.
Unter 32-Bit-Betriebssystemen: öffnen Sie das Kontextmenü für Windows PowerShell (x86) . Wählen Sie Als Administrator ausführen.
Verwenden Sie im PowerShell-Befehlsfenster den Befehl Import-Module , um die Microsoft.VisualStudio.IntelliTrace.PowerShell.dllzu importieren.
Zum Beispiel:
Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"
Berechtigungen für das ITRACE-Dateiverzeichnis einrichten
Erstellen Sie das .iTrace-Dateiverzeichnis auf dem Server der App, beispielsweise: C:\IntelliTraceLogFiles
Hinweis
- Um eine Verlangsamung der App zu vermeiden, wählen Sie einen Speicherort auf einem lokalen Hochgeschwindigkeitsdatenträger, der nicht sehr aktiv ist.
- Die ITRACE-Dateien und die Collector-Dateien können am selben Speicherort abgelegt werden. Achten Sie aber bei einer Web App oder SharePoint-Anwendung darauf, dass der Speicherort außerhalb des Verzeichnisses liegt, indem die Anwendung gehostet wird.
Wichtig
- Beschränken Sie den Zugriff auf das Verzeichnis der ITRACE-Datei auf die Identitäten, die den Collector für ihre Arbeit benötigen. Eine ITRACE-Datei kann möglicherweise vertrauliche Informationen enthalten, wie beispielsweise Daten von Benutzern, Datenbanken, anderen Quellspeicherorten und von den Verbindungszeichenfolgen, da IntelliTrace sowohl alle Daten, die an Methodenparameter übergeben werden, aufzeichnen kann, als auch als Rückgabewerte.
- Stellen Sie sicher, dass die Personen, die ITRACE-Dateien öffnen können, über die Befugnis verfügen, vertraulichen Daten einzusehen. Seien Sie bei der Freigabe von ITRACE-Dateien vorsichtig. Wenn andere Personen Zugriff benötigen, kopieren Sie die Dateien an einen sicheren freigegebenen Speicherort.
- Um eine Verlangsamung der App zu vermeiden, wählen Sie einen Speicherort auf einem lokalen Hochgeschwindigkeitsdatenträger, der nicht sehr aktiv ist.
Für eine Web App oder SharePoint-Anwendung geben Sie dem Anwendungspool vollständige Berechtigungen zum ITRACE-Dateiverzeichnis. Sie können den Windows-Befehl icacls oder den Windows-Explorer (bzw. den Datei-Explorer) verwenden.
Zum Beispiel:
So legen Sie Berechtigungen mit dem Windows-Befehl icacls fest:
Für eine Web App im DefaultAppPool -Anwendungspool:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
Für eine SharePoint-Anwendung im SharePoint - 80 -Anwendungspool:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
- oder -
So legen Sie die Berechtigungen mit dem Windows-Explorer (bzw. dem Datei-Explorer) fest:
Öffnen Sie die Eigenschaften für das ITRACE-Dateiverzeichnis.
Wählen Sie auf der Registerkarte Sicherheit die Option Bearbeiten, Hinzufügenaus.
Stellen Sie sicher, dass im Feld Diesen Objekttyp auswählen die Option Integrierte Sicherheitsprinzipale angezeigt wird. Wenn sie nicht vorhanden ist, wählen Sie Objekttypen, um sie hinzuzufügen.
Versichern Sie sich, dass der lokale Computer im Feld Aus diesem Speicherort angezeigt wird. Wenn er nicht vorhanden ist, wählen Sie Speicherorte aus, um es zu ändern.
Fügen Sie im Feld Geben Sie die Namen der auszuwählenden Objekte ein den Anwendungspool für die Web App oder die SharePoint-Anwendung hinzu.
Wählen Sie Namen überprüfen aus, um den Namen aufzulösen. Klicken Sie auf OK.
Stellen Sie sicher, dass der Anwendungspool über Vollzugriffverfügt.
Daten von einer Webapp oder SharePoint-Anwendung sammeln
Um mit dem Sammeln von Daten zu beginnen, öffnen Sie ein PowerShell-Befehlsfenster als Administrator, dann führen Sie diesen Befehl aus:
Start-IntelliTraceCollection
"
<ApplicationPool>"
<PathToCollectionPlan> <FullPathToITraceFileDirectory>Wichtig
Nach Ausführen dieses Befehls, geben Sie Y ein, um zu bestätigen, dass Sie mit dem Sammeln von Daten beginnen möchten.
So sammeln Sie beispielsweise Daten aus einer SharePoint-Anwendung in den SharePoint - 80 -Anwendungspool:
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
name Beschreibung ApplicationPool Der Name des Anwendungspools, in dem die Anwendung ausgeführt wird PathToCollectionPlan Der Pfad zu einem Auflistungsplan, einer XML-Datei, über die die Einstellungen für den Collector konfiguriert werden.
Sie können einen Plan angeben, der mit dem Collector ausgeführt wird. Die folgenden Pläne funktionieren bei Web Apps und SharePoint-Anwendungen:
- collection_plan.ASP.NET.default.xml
Sammelt nur IntelliTrace-Ereignisse und SharePoint-Ereignisse, einschließlich Ausnahmen, Datenbankaufrufen und Webserveranforderungen.
- collection_plan.ASP.NET.trace.xml
Sammelt Funktionsaufrufe und alle Daten in der Datei collection_plan.ASP.NET.de fault.xml. Dieser Plan ist für detaillierte Analysen geeignet, aber er verlangsamt möglicherweise die Anwendung mehr als collection_plan.ASP.NET.de fault.xml.
Um eine Verlangsamung der App zu vermeiden, passen Sie diese Pläne an, oder erstellen Sie sich einen eigenen. Aus Sicherheitsgründen legen Sie alle benutzerdefinierten Pläne am gleichen sicheren Speicherort ab wie die Collector-Dateien. Siehe Erstellen und Anpassen von IntelliTrace-Sammlungsplänen und Wie erhalte ich die meisten Daten, ohne meine Anwendung zu verlangsamen? Hinweis: Standardmäßig ist die maximale Größe der ITrace-Datei 100 MB. Wenn die .iTrace-Datei diese Grenze erreicht, werden die frühesten Einträge in der Datei vom Collector gelöscht, um Platz für neuere Einträge zu schaffen. Zum Ändern dieses Limits bearbeiten Sie dasMaximumLogFileSize
-Attribut des Sammlungsplans.
Wo finde ich lokalisierte Versionen dieser Sammlungspläne?
Sie finden lokalisierte Pläne in den Collector-Installationsunterordnern.FullPathToITraceFileDirectory Der vollständige Pfad zum ITRACE-Dateiverzeichnis. Sicherheitshinweis: Stellen Sie den vollständigen Pfad, keinen relativen Pfad bereit. Der Collector wird an den Anwendungspool angefügt und startet die Datensammlung.
Kann ich die ITRACE-Datei zu diesem Zeitpunkt öffnen? Nein, die Datei ist während der Datensammlung gesperrt.
Reproduzieren Sie das Problem.
Um einen Prüfpunkt der ITRACE-Datei zu erstellen, verwenden Sie die folgende Syntax:
Checkpoint-IntelliTraceCollection
"
<ApplicationPool>"
Um den Auflistungsstatus zu überprüfen, verwenden Sie die folgende Syntax:
Get-IntelliTraceCollectionStatus
Zum Beenden der Datensammlung verwenden Sie die folgende Syntax:
Stop-IntelliTraceCollection
"
<ApplicationPool>"
Wichtig
Nach Ausführen dieses Befehls, geben Sie J ein, um zu bestätigen, dass Sie das Sammeln von Daten beenden möchten. Andernfalls setzt der Collector das Sammeln von Daten möglicherweise fort, die iTrace Datei bleibt gesperrt, oder die Datei enthält eventuell keine nützlichen Daten.
Sammeln von Daten aus einer verwalteten Anwendung
Um die App zu starten und gleichzeitig Daten zu erfassen, verwenden Sie die folgende Syntax:
<FullPathToIntelliTraceCollectorExecutable>
\IntelliTraceSC.exe launch /cp:
<PathToCollectionPlan>/f:
<FullPathToITraceFileDirectoryAndFileName> <PathToAppExecutableFileAndFileName>So sammeln Sie beispielsweise Daten von einer App namens MyApp:
C:IntelliTraceCollectorIntelliTraceSC.exe launch /cp:"C:IntelliTraceCollectorcollection_plan.ASP.NET.default.xml" /f:"C:IntelliTraceLogFilesMyApp.itrace" "C:MyAppMyApp.exe"
name Beschreibung FullPathToIntelliTraceCollectorExecutable Der vollständige Pfad zur ausführbaren IntelliTraceSC.exe-Datei des Collectors PathToCollectionPlan Der Pfad zu einem Auflistungsplan, einer XML-Datei, über die die Einstellungen für den Collector konfiguriert werden.
Sie können einen Plan angeben, der mit dem Collector ausgeführt wird. Die folgende Pläne funktionieren bei verwalteten Apps:
- collection_plan.ASP.NET.default.xml
Sammelt nur IntelliTrace-Ereignisse, einschließlich Ausnahmen, Datenbankaufrufe und Webserveranforderungen.
- collection_plan.ASP.NET.trace.xml
Sammelt Funktionsaufrufe und alle Daten in der Datei collection_plan.ASP.NET.de fault.xml. Dieser Plan ist für detaillierte Analysen geeignet, aber er verlangsamt möglicherweise die Anwendung mehr als collection_plan.ASP.NET.de fault.xml.
Um eine Verlangsamung der App zu vermeiden, passen Sie diese Pläne an, oder erstellen Sie sich einen eigenen. Aus Sicherheitsgründen legen Sie alle benutzerdefinierten Pläne am gleichen sicheren Speicherort ab wie die Collector-Dateien. Siehe Erstellen und Anpassen von IntelliTrace-Sammlungsplänen und Wie erhalte ich die meisten Daten, ohne meine Anwendung zu verlangsamen? Hinweis: Standardmäßig ist die maximale Größe der ITrace-Datei 100 MB. Wenn die .iTrace-Datei diese Grenze erreicht, werden die frühesten Einträge in der Datei vom Collector gelöscht, um Platz für neuere Einträge zu schaffen. Zum Ändern dieses Limits bearbeiten Sie dasMaximumLogFileSize
-Attribut des Sammlungsplans.
Wo finde ich lokalisierte Versionen dieser Sammlungspläne?
Sie finden lokalisierte Pläne in den Collector-Installationsunterordnern.FullPathToITraceFileDirectoryAndFileName Der vollständige Pfad zum ITRACE-Dateiverzeichnis und dem ITRACE-Dateinamen mit der Erweiterung .itrace . Sicherheitshinweis: Stellen Sie den vollständigen Pfad, keinen relativen Pfad bereit. PathToAppExecutableFileAndFileName Pfad und Dateiname der verwalteten App Beenden Sie die Datensammlung, indem Sie die Anwendung verlassen.
Öffnen der ITRACE-Datei in Visual Studio Enterprise
Hinweis
Um mit IntelliTrace debuggen und Code schrittweise ausführen zu können, müssen Sie über die entsprechenden Quelldateien und Symboldateien verfügen. Siehe Diagnostizieren von Problemen nach der Bereitstellung.
Verschieben oder kopieren Sie die ITRACE-Datei auf einen Computer mit Visual Studio Enterprise (nicht mit Professional oder Community Editions).
Doppelklicken Sie außerhalb von Visual Studio auf die ITRACE-Datei, oder öffnen Sie die Datei aus Visual Studio heraus.
Visual Studio zeigt die Seite IntelliTrace-Zusammenfassung an. In den meisten Abschnitten können Sie Ereignisse oder andere Elemente überprüfen, ein Element auswählen, und mit IntelliTrace an dem Punkt mit dem Debuggen beginnen, an dem ein Ereignis aufgetreten ist. Siehe Verwenden gespeicherter IntelliTrace-Daten.
Hinweis
Um mit IntelliTrace debuggen und Code schrittweise ausführen zu können, müssen auf dem Entwicklungscomputer die entsprechenden Quelldateien und Symboldateien vorhanden sein. Siehe Diagnostizieren von Problemen nach der Bereitstellung.
Wie rufe ich die möglichst viele Daten ab, ohne die App zu verlangsamen?
IntelliTrace kann sehr viele Daten sammeln, daher sind die Auswirkungen auf die Leistung der App von den mit IntelliTrace gesammelten Daten und von der Art der analysierten Codes abhängig. Siehe Optimieren der IntelliTrace-Auflistung auf Produktionsservern.
Es gibt folgende Möglichkeiten, möglichst viele Daten abzurufen, ohne die App zu verlangsamen:
Führen Sie den Collector nur dann aus, wenn Sie ein Problem vermuten oder das Problem reproduzieren können.
Starten Sie die Sammlung, reproduzieren Sie das Problem, und beenden Sie dann Sammlung. Öffnen Sie die ITRACE-Datei in Visual Studio Enterprise, und überprüfen Sie die Daten. Siehe Öffnen der ITRACE-Datei in Visual Studio Enterprise.
Für Web Apps und für SharePoint-Anwendungen zeichnet der Collector Daten für alle Anwendungen auf, die den angegebenen Anwendungspool gemeinsam verwenden. Dies verlangsamt möglicherweise die Leistung jeder App, die den gleichen Anwendungspool verwendet, obwohl Sie nur Module für eine einzelne App in einem Sammlungsplan angeben können.
Um zu verhindern, dass der Collector andere Apps verlangsamt, hosten Sie jede App in ihrem eigenen Anwendungspool.
Überprüfen Sie die Ereignisse im Sammlungsplan, für die IntelliTrace Daten sammelt. Bearbeiten Sie den Sammlungsplan, um nicht relevante Ereignisse zu deaktivieren.
Um ein Ereignis zu deaktivieren, legen Sie das
enabled
-Attribut für das<DiagnosticEventSpecification>
-Element auffalse
fest:<DiagnosticEventSpecification enabled="false">
Wenn das
enabled
-Attribut nicht vorhanden ist, wird das Ereignis aktiviert.Wie wird dadurch die Leistung verbessert?
Sie können die Startzeit reduzieren, indem Sie Ereignisse deaktivieren, die für die App nicht relevant sind. Deaktivieren Sie beispielsweise Windows Workflow-Ereignisse für Apps, die Windows Workflow nicht verwenden.
Sie können die Start- und Laufzeitleistung verbessern, indem Sie Registrierungsereignisse für Apps deaktivieren, die auf die Registrierung zugreifen, aber keine Probleme mit Registrierungseinstellungen anzeigen.
Überprüfen Sie die Module im Sammlungsplan, für die IntelliTrace Daten sammelt. Bearbeiten Sie den Sammlungsplan, um nur für Sie interessante Module einzuschließen:
Öffnen Sie den Sammlungsplan. Suchen Sie das
<ModuleList>
-Element.Legen Sie in
<ModuleList>
dasisExclusionList
-Attribut auffalse
fest.Verwenden Sie das
<Name>
-Element, um jedes Modul mit einer der folgenden Informationen anzugeben: Dateiname, Zeichenfolgenwert, um jedes Modul einzuschließen, das diese Zeichenfolge enthält, oder öffentlicher Schlüssel.Um beispielsweise nur Daten aus dem Haupt-Webmodul der Fabrikam Fiber-Webanwendung zu sammeln, erstellen Sie eine Liste wie diese:
<ModuleList isExclusionList="false"> <Name>FabrikamFiber.Web.dll</Name> </ModuleList>
Um Daten aus jedem Modul zu sammeln, dessen Name "Fabrikam" enthält, erstellen Sie eine Liste wie diese:
<ModuleList isExclusionList="false"> <Name>Fabrikam</Name> </ModuleList>
Um Daten aus Modulen zu sammeln, indem Sie deren öffentliche Schlüsseltoken angeben, erstellen Sie eine Liste wie diese:
<ModuleList isExclusionList="false"> <Name>PublicKeyToken:B77A5C561934E089</Name> <Name>PublicKeyToken:B03F5F7F11D50A3A</Name> <Name>PublicKeyToken:31BF3856AD364E35</Name> <Name>PublicKeyToken:89845DCD8080CC91</Name> <Name>PublicKeyToken:71E9BCE111E9429C</Name> </ModuleList>
Wie wird dadurch die Leistung verbessert?
Dadurch wird die Menge der Methodenaufrufinformationen und anderer Instrumentationsdaten reduziert, die IntelliTrace sammelt, wenn die Anwendung gestartet und ausgeführt wird. Diese Daten bieten folgende Möglichkeiten:
Durchlaufen von Code nach dem Sammeln der Daten.
Überprüfen von Werten, die an Funktionsaufrufe übergeben und von diesen zurückgegeben wurden.
Warum sollten Module nicht stattdessen ausgeschlossen werden?
Standardmäßig schließen Sammlungspläne Module aus, indem das
isExclusionList
-Attribut auftrue
festgelegt wird. Das Ausschließen von Modulen kann jedoch dazu führen, dass Daten aus Modulen gesammelt werden, die die Kriterien in der Liste nicht erfüllen und für Sie nicht relevant sind, wie etwa Drittanbieter- oder Quellenmodule.
Gibt es dabei Daten, die von IntelliTrace nicht gesammelt werden?
Ja. Um Leistungseinbußen zu reduzieren, beschränkt IntelliTrace die Datensammlung auf die Werte primitiver Datentypen, die an Methoden übergeben und von ihnen zurückgegebenen werden, und auf Werte primitiver Datentypen in Feldern von Objekten der obersten Ebene, die an Methoden übergeben und von ihnen zurückgegeben werden.
Angenommen, Sie verfügen über eine
AlterEmployee
-Methodensignatur, die eine Ganzzahl-id
und einEmployee
-Objektoldemployee
akzeptiert:public Employee AlterEmployee(int id, Employee oldemployee)
Der
Employee
-Typ verfügt über die folgenden Attribute:Id
,Name
undHomeAddress
. Eine Zuordnungsbeziehung besteht zwischen demEmployee
- und demAddress
-Typ.Der Collector zeichnet Werte für
id
,Employee.Id
,Employee.Name
und dasEmployee
-Objekt auf, das von derAlterEmployee
-Methode zurückgegeben wird. Der Collector zeichnet jedoch keine Informationen zumAddress
-Objekt (außer NULL oder keine) auf. Der Collector zeichnet auch keine Daten zu lokalen Variablen in derAlterEmployee
-Methode auf, es sei denn, andere Methoden verwenden diese lokalen Variablen als Parameter. An diesem Punkt werden sie als Methodenparameter aufgezeichnet.
Wo kann ich IntelliTrace-Daten außerdem abrufen?
Sie können IntelliTrace-Daten aus einer IntelliTrace-Debuggingsitzung in Visual Studio Enterprise abrufen. Siehe IntelliTrace-Funktionen.
Wo kann ich weitere Informationen abrufen?
Verwenden gespeicherter IntelliTrace-Daten
Blogs
Remoteverwendung des eigenständigen IntelliTrace Collector
Erstellen und Anpassen von IntelliTrace-Auflistungsplänen
Optimieren der IntelliTrace-Auflistung auf Produktionsservern