Freigeben über


Ausführen von Analysetools über die Seite "Leistung und Diagnose"

Gilt für Windows und Windows Phone

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.

CPU-Auslastung (alle)

Energieverbrauch (alle)

Speicherauslastung (C#/VB/C++)

JavaScript-Speicherauslastung

XAML-UI-Reaktionsfähigkeit

HTML-UI-Reaktionsfähigkeit

JavaScript-Funktionstiming

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.

  1. Öffnen Sie das Projekt in Visual Studio.

  2. Legen Sie den Bereitstellungsspeicherort fest.

    Gilt nur für Windows Phone

    Sie können Windows Phone-Apps auf einem Telefon oder einem der Visual Studio-Emulatoren bereitstellen.

    Gilt nur für Windows

    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:

    Liste der Bereitstellungsziele für Windows Phone-Apps

  3. Öffnen Sie eine Leistungs-und Diagnosesitzungsdatei. Wählen Sie im Menü Debuggen die Option Leistung und Diagnose (Tastenkombination: ALT+F2) aus.

  4. 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:

    Mindestens ein Diagnosetool auswählen

  5. Wählen Sie Start, um die Diagnosesitzung zu starten.

  6. 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.

    Daten auf der Seite "Leistung und Diagnose" erfassen

  7. 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.

Benutzermarkierungen auf der Zeitachse

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.

"Als Startprojekt festlegen" auswählen

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:

Liste der Bereitstellungsziele für Windows Store-Apps

Der Debugspeicherort, den Sie über die Symbolleiste auswählen, wird in den Projekteigenschaften gespeichert.

Gilt nur für Windows

  • Voraussetzung zum Ausführen einer Diagnosesitzung auf einem Windows Store-Remotegerät 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.

  • Wenn Sie beim Auswählen des Remotecomputers in der Liste "Debugspeicherort" kein Remotegerät ausgewählt haben, geben Sie das Gerät im angezeigten Dialogfeld "Remoteverbindungen" an.

    Dialogfeld "Remoteverbindungen"

  • Nach dem Angeben des Remotegeräteziels ist es erforderlich, dass Sie auf der Seite Debuggen die Projekteigenschaften für das neue Gerät ändern.

  • Wenn Sie ein USB-zu-Ethernet-Kabel benutzen, um ein Remotegerät mit dem Visual Studio-Computer zu verbinden, geben Sie im Dialogfeld "Remoteverbindungen" die IP-Adresse des Remotegeräts ein.

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.

Analyseziel für Diagnosetool auswählen

Gilt nur für Windows

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.

Erstellen einer ausgeführten oder installierten App für die Diagnose

Gilt nur für Windows Phone

Wenn Sie Internet Explorer auswählen, geben Sie die URL an, und Sie können das Windows Phone-Bereitstellungsziel ändern.

URL angeben, die in Internet Explorer angezeigt wird

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.

Öffnen einer gespeicherten Diagnosesitzungsdatei

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

Datenseite "Leistung und Diagnose"

Schritt 1

Die Zeitachse zeigt die Länge der Profilerstellungssitzung, der App-Lebenszyklusaktivierungsereignisse und der Benutzermarkierungen an.

Schritt 2

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.

Schritt 3

Ein Tool zeigt mindestens ein Hauptdiagramm an. Wenn die Diagnosesitzung mit mehreren Tools erstellt wird, werden sämtliche Hauptdiagramme angezeigt.

Schritt 4

Sie können die einzelnen Diagramme erweitern und reduzieren.

Schritt 5

Wenn die Daten Informationen aus mehreren Tools enthalten, werden die Details für das Tool auf Registerkarten aufgelistet.

Schritt 6

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:

  1. Schließen Sie andere Apps, die nicht Teil der Diagnosesitzung sind.

  2. Vereinfachen Sie Ihr Szenario, sodass Sie weniger Daten sammeln.

  3. Verwenden Sie weniger Diagnosetools in einer einzelnen Sitzung.

Siehe auch

Weitere Ressourcen

Leistung (Windows Store-Apps)

Windows SDK LoggingSession-Beispiel