Eseguire il debug dell'app registrando l'esecuzione del codice con IntelliTrace

È possibile ridurre il tempo richiesto per eseguire il debug dell'applicazione in Visual Studio Ultimate quando si usa IntelliTrace per registrare e tenere traccia della cronologia di esecuzione del codice. È possibile in questo modo individuare più facilmente i bug senza impostare numerosi punti di interruzione, poiché IntelliTrace consente di effettuare le operazioni indicate di seguito.

  • Registrare eventi specifici che si sono verificati nell'app.

    È possibile esaminare il codice correlato, i dati visualizzati nella finestra Variabili locali durante gli eventi del debugger e le informazioni di chiamata di funzione, se si sceglie di raccoglierle.

  • Ridurre la necessità di riavviare l'app per ricreare bug o eventi.

  • Eseguire il debug di errori difficili da riprodurre o verificatisi in fase di distribuzione.

Ecco in che modo la registrazione degli eventi può aiutare a trovare un bug nel codice:

Solo eventi di IntelliTrace - flusso di alto livello

Selezionare l'operazione da eseguire.

Eseguire il debug dell'app con IntelliTrace in Visual Studio:

  • Mostrare gli eventi passati.

  • Mostrare le informazioni sulle chiamate con gli eventi passati.

  • Salvare la sessione di IntelliTrace.

  • Controllare i dati raccolti da IntelliTrace.

Raccogliere i dati IntelliTrace durante una sessione di test in Test Manager

Raccogliere dati IntelliTrace dalle app in distribuzione

Avviare il debug da un file di log IntelliTrace (file .iTrace).

Domande frequenti

  • Di quali app è possibile eseguire il debug con IntelliTrace?

  • Perché eseguire il debug con IntelliTrace?

  • Quali dati raccoglie IntelliTrace?

  • IntelliTrace rallenterà l'app?

Di quali app è possibile eseguire il debug con IntelliTrace?

Supportato

Supporto limitato

  • App F# su base sperimentale

  • App Windows Store supportate solo per eventi

Non supportato

  • C++, altri linguaggi e script

  • Windows Services, Silverlight, Xbox o applicazione Windows Mobile

Nota

Se si desidera eseguire il debug di un processo già in esecuzione, non è possibile usare IntelliTrace.È necessario avviare IntelliTrace all'avvio del processo.

Perché eseguire il debug con IntelliTrace?

Il debug tradizionale o attivo mostra solo lo stato corrente dell'app con dati limitati sugli eventi passati. È necessario dedurre tali eventi dallo stato corrente dell'app oppure ricrearli rieseguendo l'app.

IntelliTrace consente di espandere questa esperienza di debug tradizionale registrando dati ed eventi specifici in un preciso momento. Ciò consente di verificare cosa sia accaduto nell'app senza riavviarla, specialmente se si supera il punto in cui si è verificato il bug. IntelliTrace è attivato per impostazione predefinita durante il debug tradizionale e raccoglie i dati in modo automatico e invisibile. Ciò consente di passare facilmente dal debug tradizionale al debug IntelliTrace e viceversa per visualizzare le informazioni registrate. Vedere Registrare l'esecuzione del codice con IntelliTrace durante il debug e Quali dati raccoglie IntelliTrace?

IntelliTrace consente anche di eseguire il debug di errori difficili da riprodurre o che si verificano in fase di distribuzione. È possibile raccogliere dati IntelliTrace e salvarli in un file di log IntelliTrace (file .iTrace), contenente dettagli su eccezioni, eventi di prestazioni, richieste Web, dati di test, thread, moduli e altre informazioni di sistema. È possibile aprire questo file in Visual Studio Ultimate, selezionare un elemento e avviare il debug con IntelliTrace. Ciò consente di passare a qualsiasi evento nel file e visualizzare dettagli specifici sull'app in un dato momento.

È possibile salvare i dati IntelliTrace dalle seguenti origini:

Di seguito sono riportati alcuni esempi sul modo in cui IntelliTrace semplifica le operazioni di debug:

  • L'app ha danneggiato un file di dati, ma non si sa dove si è verificato l'evento.

    Senza IntelliTrace, sarebbe necessario esaminare il codice per trovare tutti gli accessi possibili al file, inserire punti di interruzione in corrispondenza di tali accessi e quindi rieseguire l'app per individuare dove si è verificato il problema. Con IntelliTrace è possibile vedere tutti gli eventi di accesso ai file raccolti e dettagli specifici sull'app nel momento in cui si è verificato ciascun evento.

  • Si verifica un'eccezione.

    Senza IntelliTrace si ottiene un messaggio su un'eccezione ma non si dispone di molte informazioni sugli eventi che ne hanno causato la comparsa. È possibile esaminare lo stack di chiamate per individuare la catena che ha generato l'eccezione, ma non è possibile visualizzare la sequenza di eventi che si sono verificati durante tali chiamate. Con IntelliTrace è possibile esaminare gli eventi che si sono verificati prima dell'eccezione.

  • L'app si arresta in modo anomalo in un computer utilizzato per i test, ma viene eseguita correttamente in un computer di sviluppo.

    È possibile raccogliere dati IntelliTrace da Microsoft Test Manager, salvare i dati in un file .iTrace e allegarlo a un elemento di lavoro Team Foundation Server per analizzarlo in un secondo momento. Vedere Raccogliere un maggior numero di dati di diagnostica durante i test manuali e Eseguire il debug dell'app usando dati di IntelliTrace salvati.

  • Si verifica un bug o un arresto anomalo in un'app in esecuzione in fase di distribuzione.

    Per le app basate su Microsoft Azure, è possibile configurare la raccolta di dati IntelliTrace prima di pubblicare l'app. Mentre l'app è in esecuzione, IntelliTrace salva i dati in un file .iTrace. Vedere Debug di un servizio cloud pubblicato con IntelliTrace e Visual Studio.

    Per le app Web ASP.NET ospitate in IIS 7.0, 7.5 e 8.0 o le applicazioni SharePoint 2010 o SharePoint 2013, utilizzare Microsoft Monitoring Agent, in modalità autonoma o con System Center 2012, per salvare i dati IntelliTrace in un file .iTrace.

    Si tratta di un'opzione utile per diagnosticare problemi con le app in fase di distribuzione. Vedere Raccogliere i dati diagnostici in produzione usando l'agente di raccolta autonomo IntelliTrace.

Quali dati raccoglie IntelliTrace?

Raccolta delle informazioni sugli eventi

Per impostazione predefinita, IntelliTrace registra solo gli eventi IntelliTrace. Si tratta di eventi del debugger, eccezioni, eventi di .NET Framework e altri eventi di sistema utili per il debug. È possibile scegliere i tipi di eventi IntelliTrace che si desidera raccogliere, tranne gli eventi del debugger e le eccezioni, che vengono sempre raccolti. Vedere Configurare IntelliTrace per raccogliere informazioni di debug.

  • Eventi del debugger

    IntelliTrace registra sempre gli eventi che si verificano nel debugger di Visual Studio. Ad esempio, l'avvio dell'app è un evento del debugger. Altri eventi del debugger sono eventi di arresto, ossia quelli che interrompono l'esecuzione dell'applicazione, ad esempio il rilevamento di un punto di interruzione, il rilevamento di un punto di analisi o l'esecuzione di un comando di esecuzione.

    Ai fini delle prestazioni, IntelliTrace non registra ogni possibile valore per un evento del debugger. Vengono invece registrati questi valori:

    • Valori nella finestra Variabili locali. Per visualizzarli, mantenere aperta la finestra Variabili locali.

    • Valori nella finestra Auto solo se questa finestra è aperta.

    • Valori nei suggerimenti dati mostrati quando si sposta il puntatore del mouse su una variabile nella finestra di origine per visualizzarne il valore. Tramite IntelliTrace non vengono raccolti i valori nei suggerimenti dati bloccati.

  • Eccezioni

    Tramite IntelliTrace vengono registrati il tipo di eccezione e il messaggio per questi tipi di eccezione:

    • Eccezioni gestite in cui l'eccezione viene generata e rilevata

    • Eccezioni non gestite

  • Eventi .NET Framework

    Per impostazione predefinita, tramite IntelliTrace vengono registrati gli eventi .NET Framework più comuni. Ad esempio:

    • Per un evento di accesso ai file, tramite IntelliTrace viene raccolto il nome del file.

    • Per un evento di verifica della casella di controllo, raccoglie lo stato e il testo della casella di controllo.

  • Eventi delle applicazioni SharePoint 2010 e SharePoint 2013

    È possibile registrare eventi di profili utente e un subset di eventi del sistema di registrazione unificato per le applicazioni SharePoint 2010 e 2013 in esecuzione all'esterno di Visual Studio. È possibile salvare questi eventi in un file .iTrace. Richiede l'esecuzione di Visual Studio Ultimate 2013 o Microsoft Monitoring Agent in modalità Traccia.

    Quando si apre il file .iTrace, immettere un ID di correlazione SharePoint per trovare la richiesta Web corrispondente, visualizzare gli eventi registrati e avviare il debug da un evento specifico. Se il file contiene eccezioni non gestite, è possibile scegliere un ID di correlazione per avviare il debug di un'eccezione.

    Vedere:

Raccolta delle informazioni sulle chiamate di funzione

È possibile configurare IntelliTrace per la raccolta delle informazioni sulle chiamate per le funzioni. Tali informazioni consentono di visualizzare la cronologia dello stack di chiamate e scorrere in avanti e indietro le chiamate nel codice. Per ogni chiamata di funzione, IntelliTrace registra i seguenti dati:

  • Nome della funzione

  • Valori dei tipi di dati primitivi passati come parametri nei punti di ingresso di una funzione e restituiti nei punti di uscita

  • Valori delle proprietà automatiche quando vengono letti o modificati

  • Puntatori agli oggetti figlio di primo livello, ma non ai relativi valori, se non quelli che indicano se lo stato è null oppure no

Nota

IntelliTrace raccoglie solo i primi 256 oggetti in matrici e i primi 256 caratteri per le stringhe.

Vedere Configurare IntelliTrace per raccogliere informazioni di debug.

Raccolta delle informazioni sui moduli

Per controllare la quantità di informazioni sulle chiamate raccolte da IntelliTrace, specificare solo i moduli di interesse. In questo modo è possibile migliorare le prestazioni dell'app durante la raccolta. Vedere Configurare IntelliTrace per raccogliere informazioni di debug.

IntelliTrace rallenterà l'app?

Per impostazione predefinita, vengono raccolti dati solo per eventi di IntelliTrace selezionati. Ciò può rallentare o meno l'app, a seconda della struttura e dell'organizzazione del codice. Ad esempio, se IntelliTrace registra spesso un evento, l'app potrebbe risultare rallentata, ma l'utente potrebbe anche considerarne il refactoring.

La raccolta di informazioni sulle chiamate potrebbe rallentare significativamente l'app. Potrebbe inoltre aumentare la dimensione di ogni file di log IntelliTrace (file .iTrace) salvato nel disco. Per ridurre al minimo questi effetti, raccogliere le informazioni sulle chiamate solo per i moduli desiderati. Per modificare la dimensione massima dei file .iTrace, passare a Strumenti, Opzioni, IntelliTrace, Avanzate. Vedere Configurare IntelliTrace per raccogliere informazioni di debug.

Dove è possibile ottenere altre informazioni?

Registrare l'esecuzione del codice con IntelliTrace durante il debug

Configurare IntelliTrace per raccogliere informazioni di debug

Inclusione di dati di traccia di diagnostica nei bug difficili da riprodurre

Configurare la versione per diagnosticare i problemi dopo la distribuzione

Eseguire il debug dell'app usando dati di IntelliTrace salvati

Blog

Visual Studio ALM + Team Foundation Server

Forum

Diagnostica di Visual Studio

Linee guida

Test per una distribuzione continua con Visual Studio 2012 – Capitolo 6: casella degli strumenti per test