Ausführen von Analysetools über die Seite "Leistung und Diagnose"
Analysieren Sie die Leistung, die Arbeitsspeichernutzung und den Energieverbrauch von Windows Store- und Windows Phone-Apps mit dem Profiler und den Diagnosetools von Visual Studio. Mit dem Leistungs- und Diagnosehub wählen Sie diese Tools ganz einfach aus, kombinieren mehrere Tools in einem einzelnen Diagnosevorgang und verwalten die so erstellten Berichte. Die Tools können auf den meisten Bereitstellungszielen ausgeführt werden. Verwenden Sie für Windows Phone-Apps ein Telefon oder einen Emulator. Verwenden Sie für Windows Store-Apps den Visual Studio-Computer, den Simulator oder einen Remote-PC. Nachdem Sie die Daten gesammelt haben, zeigt der Diagnosebericht Zeitachsendiagramme und Detailansichten der Daten an. Durch Filter und Einstellungen für Leistungs- und Diagnoseberichte legen Sie den Schwerpunkt auf die kritischen Werte in den Daten.
Tools im Leistungs- und Diagnosehub
Im Leistungs- und Diagnosehub werden zum einen die Tools angezeigt, die Sie für bestimmte App-Typen – XAML und C#/VB/C++ oder HTML und JavaScript – verwenden können, und zum anderen die Tools, die Sie in einem einzelnen Diagnosevorgang nutzen können.
In diesem Artikel
Schnellstart: Sammeln von Diagnosedaten
Sammeln von Diagnosedaten
Hinzufügen von Benutzermarkierungen, um Positionen in den Diagnosedaten zu identifizieren | Festlegen des Startprojekts | Festlegen des Analyseziels | Auswählen der gewünschten Tools für die Diagnosesitzung | Starten und Beenden der Diagnosesitzung
Öffnen einer Diagnosesitzungsdatei
Die Seite mit Leistungs- und Diagnosedaten
Problembehandlung
Schnellstart: Sammeln von Diagnosedaten
Hinweis
Sie müssen über Administratorrechte verfügen, um die Leistungs- und Diagnosetools auszuführen.Führen Sie daher entweder Visual Studio als Administrator aus, oder führen Sie die Tools als Administrator aus, wenn Sie die Diagnosesitzung starten.
Öffnen Sie das Projekt in Visual Studio.
Legen Sie den Bereitstellungsspeicherort fest.
Sie können Windows Phone-Apps auf einem Telefon oder einem der Visual Studio-Emulatoren bereitstellen.
Windows Store-Apps können auf dem Visual Studio-Computer, dem Visual Studio-Simulator oder einem über das Netzwerk verbundenen PC oder Tablet bereitgestellt werden.
Hinweis: Voraussetzung zum Ausführen einer Diagnosesitzung auf einem Remote-PC oder -Tablet ist, dass die Visual Studio-Remotetools auf dem Remoteziel installiert sind und ausgeführt werden. Weitere Informationen finden Sie unter Ausführen von Windows Store-Apps auf einem Remotecomputer in Visual Studio.
Wählen Sie in der Liste "Debugspeicherort" in der Debugger-Symbolleiste den Bereitstellungsort für Ihre App aus. Dies ist die Liste für Windows Phone-Apps:
Öffnen Sie eine Leistungs-und Diagnosesitzungsdatei. Wählen Sie im Menü Debuggen die Option Leistung und Diagnose (Tastenkombination: ALT+F2) aus.
Wählen Sie im Leistungs- und Diagnosehub mindestens ein Tool aus, das in der Diagnosesitzung ausgeführt werden soll. Es werden nur die Tools angezeigt, die für den Projekttyp und die Programmiersprache infrage kommen. Wenn Sie ein Diagnosetool auswählen, wird die Auswahl für Tools, die nicht in derselben Diagnosesitzung ausgeführt werden können, deaktiviert. Für eine JavaScript-App kann die Auswahl zum Beispiel so aussehen:
Wählen Sie Start, um die Diagnosesitzung zu starten.
Führen Sie die Szenarien aus, für die Sie Daten sammeln möchten.
Einige Tools zeigen auf der Seite "Leistung und Diagnose" Diagramme mit Echtzeitdaten an, während Sie die Sitzung ausführen.
Wählen Sie zum Beenden der Diagnosesitzung Auflistung beenden aus.
Sammeln von Diagnosedaten
Hinzufügen von Benutzermarkierungen, um Positionen in den Diagnosedaten zu identifizieren | Festlegen des Startprojekts | Festlegen des Analyseziels | Auswählen der gewünschten Tools für die Diagnosesitzung | Starten und Beenden der Diagnosesitzung
Hinzufügen von Benutzermarkierungen, um Positionen in den Diagnosedaten zu identifizieren
Sie können den Profilerstellungsdaten Benutzermarkierungen hinzufügen, die bei der Identifizierung von Bereichen im Zeitachsenlineal hilfreich sind.
Die Markierung wird bei Ausführung der Methode in der Zeitachse als orangefarbenes Dreieck angezeigt. Die Meldung und die Uhrzeit werden als QuickInfo angezeigt, wenn Sie auf die Markierung zeigen. Wenn mindestens zwei Benutzermarkierungen nahe beieinander liegen, werden die Markierungen zusammengeführt und die QuickInfo-Daten werden kombiniert. Sie können auf der Zeitachse eine Vergrößerung durchführen, um die Markierungen zu trennen.
Hinweis
-
In Berichten zum JavaScript-Funktionstiming werden keine Benutzermarkierungen angezeigt.
-
Wird in der Diagnosesitzung als einziges Tool das CPU-Auslastungstool verwendet, werden in den Berichten keine Benutzermarkierungen angezeigt.
-
Weitere Beispiele finden Sie im Windows SDK-Beispiel LoggingSession.
Hinzufügen von Markierungen zu C#-, Visual Basic- und C++-Code
Um C#-, Visual Basic- und C++-Code eine Benutzermarkierung hinzuzufügen, erstellen Sie zuerst ein Windows.Foundation.Diagnostics LoggingChannel-Objekt. Fügen Sie anschließend an den Positionen im Code, die Sie markieren möchten, Aufrufe von LoggingChannel.LogMessage-Methoden ein. Verwenden Sie in den Aufrufen die LoggingLevel.Information-Enumeration.
Wenn die Methode beendet wird, wird den Profilerstellungsdaten eine Benutzermarkierung und eine Meldung hinzugefügt.
Hinweise
Das Hinzufügen von Protokollierungskanälen zum Code stellt Sie vor verschiedene Herausforderungen:
**Jeder offene Protokollierungskanal muss einen eindeutigen Namen haben.**Der Versuch, einen neuen Protokollierungskanal zu erstellen, der denselben Namen wie ein offener Kanal hat, löst eine Ausnahme aus.
Eine Methode zur Vermeidung von doppelten Namen im Code ist die Verwendung einer statischen (Shared in VB) Methode, um einen LoggingChannel zurückzugeben, dessen Name garantiert eindeutig ist. Im Folgenden ein Beispiel, das eine GUID verwendet, um Eindeutigkeit zu ermöglichen:
//using Windows.Foundation.Diagnostics
public static LoggingChannel GetLoggingChannel()
{
var name = Guid.NewGuid().ToString();
return new LoggingChannel(name);
}
'Imports Windows.Foundation.Diagnostics
Public Shared Function GetLoggingChannel() As LoggingChannel
Dim Name = Guid.NewGuid().ToString()
GetLoggingChannel = New LoggingChannel(Name)
End Function
//using namespace Windows::Foundation::Diagnostics;
static LoggingChannel^ MainPage::GetLoggingChannel()
{
auto name = (ref new Guid())->ToString();
auto channel = ref new LoggingChannel(name);
return channel;
}
C# und VB: LoggingChannel-Objekte sollten verworfen werden.
Da LoggingChannel-Objekte Systemressourcen verwenden, sind die C#- und VB-Projektionen von LoggingChannel von der System.IDisposable-Schnittstelle abgeleitet, um Ihnen das Freigeben der Ressourcen zu ermöglichen, bevor das Objekt durch den CLR Garbage Collector vernichtet wird. In C++-Code wird das LoggingChannel-Objekt vernichtet und die Ressourcen freigegeben, sobald das Objekt den Gültigkeitsbereich verlässt. Im Folgenden einige Beispiele für Muster, die Sie verwenden können, um Benutzermarkierungen zu einer Diagnosesitzungsdatei hinzuzufügen:
void MyScenario()
{
var logLevel = LoggingLevel.Information;
using(var channel = Utils.GetLoggingChannel())
{
channel.LogMessage("MyScenario Start", logLevel);
// scenario code
channel.LogMessage("MyScenario End", logLevel);
}
}
Sub MyScenario()
Dim logLevel = LoggingLevel.Information
Using channel As LoggingChannel = Utils.GetLoggingChannel()
channel.LogMessage("MyScenario Start", logLevel)
'scenario code
channel.LogMessage("MyScenario End", logLevel)
End Using
End Sub
// m_channel resources are released when containing
// object goes out of scope
LoggingChannel^ m_channel = MainPage::GetLoggingChannel();
LoggingLevel m_logLevel = LoggingLevel::Information;
void MyScenario()
{
m_channel->LogMessage(L"MyScenario Start", m_logLevel);
//scenario code
m_channel->LogMessage(L"MyScenario Start", m_logLevel);
}
Hinzufügen von Markierungen zu JavaScript-Code
Um Benutzermarkierungen hinzuzufügen, fügen Sie Ihrem Code an den gewünschten Positionen den folgenden Code hinzu:
if (performance && performance.mark) {
performance.mark(markDescription);
}
markDescription ist eine Zeichenfolge, die die Meldung enthält, die in der QuickInfo der Benutzermarkierung angezeigt werden soll.
Festlegen des Startprojekts
Wenn die Lösung mehrere App-Projekte enthält, muss das Projekt, das Sie analysieren möchten, als Startprojekt festgelegt sein. Wählen Sie im Projektmappen-Explorer das Projekt aus, und wählen Sie dann im Kontextmenü Als Startprojekt festlegen aus.
Festlegen des Bereitstellungsspeicherorts
Diagnosesitzungen für Windows Phone-Apps können Sie entweder auf einem Windows-Telefon, das direkt mit dem Visual Studio-Computer verbunden ist, oder im Windows Phone-Emulator in Visual Studio ausführen. Sie können Windows Store-Apps auf dem Visual Studio-Computer, im Visual Studio-Simulator für Geräte oder auf einem Remotegerät ausführen. Letzteres muss über ein Netzwerk mit Visual Studio verbunden sein oder über ein Ethernet-zu-USB-Kabel direkt an den Visual Studio-Computer angeschlossen sein. Legen Sie das Bereitstellungsziel entweder in den Projekteigenschaften auf der Seite "Debuggen" fest, oder wählen Sie das Ziel in der Visual Studio-Symbolleiste in der Liste "Debugspeicherort" aus. Dies ist die Bereitstellungsliste für Windows Store-Apps:
Der Debugspeicherort, den Sie über die Symbolleiste auswählen, wird in den Projekteigenschaften gespeichert.
|
Festlegen des Analyseziels
Sie können im Visual Studio-Projekt nicht nur die App starten, sondern auch Diagnosesitzungen für alternative Ziele ausführen. Zum Beispiel möchten Sie möglicherweise Leistungsprobleme für eine Version der App diagnostizieren, die aus dem Windows App Store installiert wurde.
Sie können Windows Store-Apps starten, die bereits auf einem Gerät installiert wurden, oder Sie können die Diagnosetools an eine Windows Store-App anfügen, die bereits ausgeführt wird. Wenn Sie "Ausgeführte App" oder "Installierte App" auswählen, wählen Sie die App in einer Liste aus, die die Apps auf dem angegebenen Bereitstellungsziel erkennt. |
|
Wenn Sie Internet Explorer auswählen, geben Sie die URL an, und Sie können das Windows Phone-Bereitstellungsziel ändern. |
Auswählen der gewünschten Tools für die Diagnosesitzung
Wählen Sie im Leistungs- und Diagnosehub mindestens ein Tool aus, das in der Diagnosesitzung ausgeführt werden soll. Es werden nur die Tools angezeigt, die für den Projekttyp und die Programmierung infrage kommen. Wenn Sie ein Diagnosetool auswählen, wird die Auswahl für Tools, die nicht in derselben Diagnosesitzung ausgeführt werden können, deaktiviert. Für eine JavaScript-App kann die Auswahl zum Beispiel so aussehen:
Starten und Beenden der Diagnosesitzung
Wählen Sie "Start", um die Diagnosesitzung zu starten.
Wählen Sie unten auf der Seite Auflistung beenden, um die Diagnosesitzung zu beenden und die Datenanalyse zu starten.
Öffnen einer Diagnosesitzungsdatei
Nach dem Beenden der Datensammlung in einer Diagnosesitzung werden die Daten sofort analysiert und anschließend im Leistungs- und Diagnosebericht angezeigt.
Sie können auch gespeicherte .diagnosis-Sitzungsdateien in der Liste mit zuletzt geöffneten Dateien im Leistungs- und Diagnosehub öffnen.
Mit der Schaltfläche zum Anzeigen oder Ausblenden oben im Leistungs- und Diagnosehub erweitern bzw. reduzieren Sie die Liste zuletzt verwendeter Dateien.
Der Leistungs- und Diagnosebericht
Die Zeitachse zeigt die Länge der Profilerstellungssitzung, der App-Lebenszyklusaktivierungsereignisse und der Benutzermarkierungen an. |
|
Sie können den Bericht auf einen Teil der Zeitachse einschränken, indem Sie die blauen Striche ziehen, um einen Bereich der Zeitachse auszuwählen. |
|
Ein Tool zeigt mindestens ein Hauptdiagramm an. Wenn die Diagnosesitzung mit mehreren Tools erstellt wird, werden sämtliche Hauptdiagramme angezeigt. |
|
Sie können die einzelnen Diagramme erweitern und reduzieren. |
|
Wenn die Daten Informationen aus mehreren Tools enthalten, werden die Details für das Tool auf Registerkarten aufgelistet. |
|
Ein Tool kann eine oder mehrere Detailansichten haben. Die Ansicht wird durch den ausgewählten Bereich der Zeitachse gefiltert. |
Problembehandlung
Diagnoseereignisse wurden entfernt.Einige Information im Bericht fehlen möglicherweise oder sind ungenau.
Der Datensammler in den Leistungs- und Diagnosetools kann arbeitsspeicher- und CPU-intensiv sein. Wenn der Datensammler nicht in der Lage ist, alle Diagnoseereignisse zu protokollieren, wird die Meldung in einer Informationsleiste am oberen Rand des Leistungs- und Diagnosebereichs angezeigt. Einige Daten im Bericht fehlen möglicherweise oder sind ungültig.
Um dieses Problem zu beheben, probieren Sie diese Schritte, um Ressourcen auf dem Computer freizugeben, und führen Sie dann die Diagnosesitzung erneut aus:
Schließen Sie andere Apps, die nicht Teil der Diagnosesitzung sind.
Vereinfachen Sie Ihr Szenario, sodass Sie weniger Daten sammeln.
Verwenden Sie weniger Diagnosetools in einer einzelnen Sitzung.