Condividi tramite


Eseguire strumenti di analisi dalla pagina Prestazioni e diagnostica

Si applica a Windows e Windows Phone

Puoi analizzare le prestazioni, l'uso della memoria e il consumo energetico delle app Windows Store e Windows Phone usando gli strumenti di diagnostica e i profiler di Visual Studio. L'hub Prestazioni e diagnostica semplifica la selezione e l'esecuzione di questi strumenti, combina più strumenti in una singola esecuzione e gestisce i report generati da tali strumenti. Puoi eseguire questi strumenti sulla maggior parte delle destinazioni di distribuzione. Per le app Windows Phone, usa un telefono o un emulatore. Per le app Windows Store, usa un PC remoto, il simulatore o il computer che esegue Visual Studio. Dopo aver raccolto i dati, il report di diagnostica visualizza i grafici cronologia e le visualizzazioni dettagli dei dati. I filtri e le impostazioni del report di Prestazioni e diagnostica ti consentono di concentrarti sulle parti critiche dei dati.

Strumenti dell'hub Prestazioni e diagnostica

L'hub Prestazioni e diagnostica ti mostra gli strumenti che puoi usare su tipi particolari di app (XAML e C#/VB/C++ o HTML e JavaScript) e gli strumenti che puoi usare in una singola esecuzione.

Utilizzo CPU (Tutti)

Utilizzo di energia (Tutti)

Utilizzo memoria (C#/VB/C++)

Utilizzo memoria JavaScript

Velocità di risposta interfaccia utente XAML

Velocità di risposta interfaccia utente HTML

Temporizzazione funzione JavaScript

In questo articolo

  • Guida introduttiva: raccogliere dati di diagnostica

  • Raccogliere dati di diagnostica

    Aggiungere contrassegni utente per identificare le posizioni nei dati di diagnostica | Impostare il progetto di avvio | Impostare la destinazione di analisi | Scegliere gli strumenti da eseguire durante la sessione di diagnostica | Avviare e arrestare la sessione di diagnostica

  • Aprire un file di sessione di diagnostica

  • Pagina di dati di Prestazioni e diagnostica

  • Risoluzione dei problemi

Guida introduttiva: raccogliere dati di diagnostica

Nota

Devi disporre dei privilegi di amministratore per eseguire gli strumenti di prestazioni e diagnostica.Puoi eseguire Visual Studio come amministratore oppure puoi scegliere di eseguire gli strumenti come amministratore quando avvii la sessione di diagnostica.

  1. Apri il progetto in Visual Studio.

  2. Imposta il percorso di distribuzione.

    Si applica solo a Windows Phone

    Le app Windows Phone possono essere distribuite su un telefono o su uno degli emulatori di Visual Studio.

    Si applica solo a Windows

    Le app Windows Store possono essere distribuite nel computer che esegue Visual Studio, nel simulatore di Visual Studio o in un tablet o PC connesso in rete.

    Nota: l'esecuzione di una sessione di diagnostica in un tablet o PC remoto richiede l'installazione e l'esecuzione di Visual Studio Remote Tools nella destinazione remota. Vedere Eseguire app di Windows Store in un computer remoto da Visual Studio.

    Nell'elenco dei percorsi di debug sulla barra degli strumenti del debugger, seleziona il percorso di distribuzione per la tua app. Ecco l'elenco delle app telefono:

    Elenco di destinazioni di distribuzione per le applicazioni Windows Phone

  3. Apri una sessione di Prestazioni e diagnostica. Scegli Prestazioni e diagnostica dal menu Debug (tasto di scelta rapida: ALT + F2).

  4. Nell'hub Prestazioni e diagnostica scegli uno o più strumenti da eseguire durante la sessione. Vengono visualizzati solo gli strumenti applicabili al tipo di progetto e al linguaggio di programmazione. Quando scegli uno strumento di diagnostica, quelli che non possono essere eseguiti nella stessa sessione di diagnostica vengono disabilitati. Ecco le possibili scelte per un'app JavaScript:

    Scegliere uno o più strumenti diagnostici

  5. Per avviare la sessione di diagnostica, scegli Avvia.

  6. Esegui gli scenari per cui desideri raccogliere dati.

    Durante la sessione, alcuni strumenti visualizzano grafici dei dati in tempo reale nella pagina Prestazioni e diagnostica.

    Raccogliere dati sulla pagina Prestazioni e diagnostica

  7. Per terminare la sessione di diagnostica, scegli Arresta raccolta.

Raccogliere dati di diagnostica

Aggiungere contrassegni utente per identificare le posizioni nei dati di diagnostica | Impostare il progetto di avvio | Impostare la destinazione di analisi | Scegliere gli strumenti da eseguire durante la sessione di diagnostica | Avviare e arrestare la sessione di diagnostica

Aggiungere contrassegni utente per identificare le posizioni nei dati di diagnostica

Puoi aggiungere contrassegni utente ai dati di profilatura per identificare aree nel righello della sequenza temporale.

Contrassegni utente nella sequenza temporale

Il contrassegno viene visualizzato come triangolo arancione nella sequenza temporale in corrispondenza del momento in cui il metodo viene eseguito. Il messaggio e l'ora vengono visualizzati come descrizione comando quando passi il puntatore del mouse sul contrassegno. Se due o più contrassegni utente sono vicini, i contrassegni vengono uniti e i dati della descrizione comando vengono combinati. Puoi eseguire lo zoom avanti nella sequenza temporale per separare i contrassegni.

Nota

  • I report di Temporizzazione funzione JavaScript non visualizzano i contrassegni utente.

  • I report non visualizzano i contrassegni utente quando lo strumento Utilizzo CPU è l'unico strumento usato in una sessione di diagnostica.

  • Per esempi, fai riferimento all'Esempio LoggingSession in Windows SDK Sample.

Aggiungere contrassegni al codice C#, Visual Basic e C++

Per aggiungere un contrassegno utente al codice C#, Visual Basic e C++, crea innanzitutto un oggetto Windows.Foundation.Diagnostics LoggingChannel. In secondo luogo, inserisci chiamate ai metodi LoggingChannel.LogMessage in corrispondenza dei punti nel codice che desideri contrassegnare. Usa LoggingLevel.Information nelle chiamate.

Quando il metodo viene eseguito, un contrassegno utente viene aggiunto ai dati di profilatura con un messaggio.

Note

L'aggiunta di canali di registrazione al codice implica alcuni problemi:

Ogni canale di registrazione aperto deve avere un nome univoco. Il tentativo di creare un nuovo canale di registrazione con lo stesso nome di un canale aperto causa un'eccezione.

Un modo per evitare nomi duplicati nel codice consiste nell'usare un metodo statico (Shared in VB) per restituire un LoggingChannel il cui nome è sicuramente univoco. Ecco un esempio in cui viene usato un GUID per garantire l'univocità:

//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# e VB: gli oggetti LoggingChannel devono essere eliminati

Dal momento che gli oggetti LoggingChannel usano risorse di sistema, le proiezioni C# e VB di LoggingChannel derivano dall'interfaccia System.IDisposable e permettono di rilasciare le risorse prima che l'oggetto sia distrutto dal Garbage Collector CLR. Nel codice C++ l'oggetto LoggingChannel viene distrutto e le risorse vengono rilasciate non appena l'oggetto non è più compreso nell'ambito. Ecco alcuni esempi di modelli che puoi usare per aggiungere contrassegni utente a un file della sessione di diagnostica:

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);
}

Aggiungere contrassegni al codice JavaScript

Per aggiungere contrassegni utente aggiungi il seguente codice in corrispondenza dei punti nel codice che desideri contrassegnare:

if (performance && performance.mark) {
    performance.mark(markDescription);
}

markDescription è una stringa che contiene il messaggio da visualizzare nella descrizione comando del contrassegno utente.

Impostare il progetto di avvio

Se la soluzione contiene più progetti di app, assicurati che quella che desideri analizzare sia impostata come progetto di avvio. In Esplora soluzioni seleziona il progetto e scegli Imposta come progetto di avvio dal menu di scelta rapida.

Scegliere Set come Progetto di avvio

Impostare il percorso di distribuzione

Puoi eseguire sessioni di diagnostica per app telefono in un Windows Phone direttamente connesso al computer che esegue Visual Studio o in un emulatore del telefono di Visual Studio. Puoi eseguire app Windows Store nel computer che esegue Visual Studio, nel simulatore del dispositivo di Visual Studio o in un dispositivo remoto connesso a Visual Studio in rete o connesso direttamente al computer che esegue Visual Studio con un cavo Ethernet-USB. Puoi impostare la destinazione di distribuzione nella pagina Debug delle proprietà del progetto oppure scegliere la destinazione dall'elenco di percorsi di distribuzione sulla barra degli strumenti di Visual Studio. Ecco l'elenco di distribuzione per le app Windows Store:

Elenco di destinazioni di distribuzione per le app di Windows Store

La scelta effettuata sulla barra degli strumenti del percorso di debug viene salvata nelle proprietà del progetto.

Si applica solo a Windows

  • L'esecuzione di una sessione di diagnostica in un dispositivo Windows Store richiede l'installazione e l'esecuzione di Visual Studio Remote Tools nella destinazione remota. Vedere Eseguire app di Windows Store in un computer remoto da Visual Studio.

  • Se non hai specificato un dispositivo remoto quando hai scelto il computer remoto nell'elenco dei percorsi di debug, specifica il dispositivo nella finestra di dialogo Connessioni remote che viene visualizzata.

    Finestra di dialogo Connessioni remote

  • Dopo aver specificato la destinazione del dispositivo remoto, devi usare la pagina Debug delle proprietà del progetto per passare a un nuovo dispositivo.

  • Se usi un cavo da USB a Ethernet per connettere un dispositivo remoto con il computer che esegue Visual Studio, specifica l'indirizzo IP del dispositivo remoto nella finestra di dialogo Connessioni remote.

Impostare la destinazione di analisi

Oltre ad avviare l'app dal progetto di Visual Studio, puoi eseguire sessioni di diagnostica su destinazioni alternative. Puoi ad esempio eseguire la diagnostica dei problemi di prestazioni su una versione dell'app installata da Windows App Store.

Scegliere la destinazione di analisi degli strumenti diagnostici

Si applica solo a Windows

Puoi avviare le app Windows Store già installate in un dispositivo o collegare gli strumenti di diagnostica a un'app Windows Store già in esecuzione. Quando scegli App in esecuzione o App installata, selezioni l'app da un elenco che rileva le app nella destinazione di distribuzione specificata.

Scegliere un'app in esecuzione o installata per la diagnostica

Si applica solo a Windows Phone

Quando scegli Internet Explorer, specifichi l'URL e puoi modificare la destinazione di distribuzione del telefono.

Specificare l'URL da visualizzare in Internet Explorer

Scegliere gli strumenti da eseguire durante la sessione di diagnostica

Nell'hub Prestazioni e diagnostica scegli uno o più strumenti da eseguire durante la sessione di diagnostica. Vengono visualizzati solo gli strumenti applicabili al tipo di progetto e al linguaggio di programmazione. Quando scegli uno strumento di diagnostica, quelli che non possono essere eseguiti nella stessa sessione di diagnostica vengono disabilitati. Ecco le possibili scelte per un'app JavaScript:

Avviare e arrestare la sessione di diagnostica

Per avviare la sessione di diagnostica, scegli Avvia.

Per terminare la sessione di diagnostica e avviare l'analisi dei dati, scegli Arresta raccolta nella parte inferiore della pagina.

Aprire un file di sessione di diagnostica

Quando termini la raccolta dei dati in una sessione di diagnostica, i dati vengono immediatamente analizzati e visualizzati nel report di Prestazioni e diagnostica.

Puoi anche aprire i file di sessione .diagnosis aperti dall'elenco dei file aperti di recente nell'hub Prestazioni e diagnostica.

Aprire una file delle sessioni di diagnostica salvato

Scegli il pulsante mostra o nascondi nella parte superiore dell'hub Prestazioni e diagnostica per espandere o comprimere l'elenco dei file aperti di recente.

Report di Prestazioni e diagnostica

Pagina di dati Prestazioni e diagnostica

Passaggio 1

La sequenza temporale mostra la durata della sessione di profilatura, gli eventi di attivazione del ciclo di vita dell'app e i contrassegni utente.

Passaggio 2

Puoi limitare il report a una parte della sequenza temporale trascinando le barre blu per selezionare un'area della stessa.

Passaggio 3

Uno strumento visualizza uno o più grafici master. Se la sessione di diagnostica viene creata con più strumenti, tutti i grafici master vengono visualizzati.

Passaggio 4

Puoi comprimere ed espandere i singoli grafici.

Passaggio 5

Se i dati includono informazioni raccolte tramite più strumenti, i dettagli di ogni strumento vengono raccolti in schede.

Passaggio 6

A uno strumento possono essere associate una o più visualizzazioni dettagli. La visualizzazione viene filtrata in base alla sezione selezionata della cronologia.

Risoluzione dei problemi

Eventi di diagnostica rilasciati.Alcune informazioni del report potrebbero essere mancanti o non precise

L'agente di raccolta dati negli strumenti di Prestazioni e diagnostica può richiedere quantità elevate di memoria e CPU. Se l'agente di raccolta dati non riesce a registrare tutti gli eventi di diagnostica, mostra il messaggio in una barra informazioni nella parte superiore della pagina Prestazioni e diagnostica. Alcuni dati del report potrebbero essere mancanti o non validi.

Per risolvere il problema, prova a eseguire questi passaggi per liberare risorse nel computer, quindi esegui di nuovo la sessione di diagnostica:

  1. Chiudi tutte le altre app che non fanno parte della sessione di diagnostica.

  2. Semplifica lo scenario, in modo da raccogliere meno dati.

  3. Usa meno strumenti di diagnostica in una singola sessione.

Vedere anche

Altre risorse

Prestazioni (app di Windows Store)

Esempio LoggingSession di Windows SDK