Condividi tramite


Raccogliere dati di IntelliTrace all'esterno di Visual Studio con lo strumento di raccolta indipendente

Per eseguire il debug di applicazioni in ambienti di produzione o in altri ambienti, utilizzare l'agente di raccolta IntelliTrace per salvare i dati diagnostici in un file di log IntelliTrace (file con estensione .iTrace).Ciò consente di registrare ciò che si è verificato nell'applicazione senza installare Visual Studio o senza modificare l'ambiente dell'applicazione.Una volta completata la raccolta dei dati, è sufficiente eliminarlo per disinstallarlo.

Funzionamento di IntelliTrace: Raccolta e analisi dei dati IntelliTrace in produzione per l'esecuzione del debug (video Channel 9)

Requisiti

  • .NET Framework 3.5, 4 o 4.5

  • Visual Studio Ultimate in un computer di sviluppo o in un altro computer per aprire i file .iTrace

    [!NOTA]

    Assicurarsi di salvare i file di simboli (.pdb).Per eseguire il debug con IntelliTrace e per scorrere il codice, è necessario disporre dei file di origine e dei file di simboli corrispondenti.Vedere Trovare file di simboli (.pdb), di origine e binari.

domande frequenti

  • Quali applicazioni funzionano con l'agente di raccolta?

  • Da dove si inizia?

  • Come è possibile ottenere il maggior numero possibile di dati senza rallentare l'applicazione?

  • In quale altro modo è possibile ottenere i dati IntelliTrace?

Quali applicazioni funzionano con l'agente di raccolta?

  • Applicazioni Web ASP.NET ospitate su Internet Information Services (IIS) versione 7.0, 7.5 e 8.0

  • Applicazioni SharePoint 2010

  • Applicazioni desktop gestite (file .exe)

Da dove si inizia?

  1. Install the collector.

  2. Set up permissions for the collector directory.

  3. For Web apps and SharePoint applications, install the IntelliTrace PowerShell cmdlets.

  4. Set up permissions for the .iTrace file directory.

  5. Collect data from a Web app or SharePoint application.

    In alternativa

    Collect data from a managed app.

  6. Open the .iTrace file in Visual Studio Ultimate.

Installare l'agente di raccolta

  1. Nel server dell'applicazione, creare la directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector

  2. Ottenere l'agente di raccolta dall'Area download Microsoft oppure dalla cartella di installazione di Visual Studio:

    • Area download Microsoft:

      1. Nel server dell'applicazione, andare alla pagina relativa all'agente di raccolta IntelliTrace per Visual Studio.

      2. Accanto a IntelliTraceCollector.exe, scegliere Download.

      3. Salvare IntelliTraceCollector.exe nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector

      4. Eseguire IntelliTraceCollector.exe.Questo estrae il file IntelliTraceCollection.cab.

      - oppure -

    • Cartella di installazione di Visual Studio:

      [!NOTA]

      Per ottenere l'agente di raccolta che supporta gli eventi di diagnostica per le applicazioni per SharePoint 2010, scaricare l'agente di raccolta IntelliTrace per Visual Studio oppure assicurarsi di aver installato Visual Studio 2012.1.

      1. Copiare IntelliTraceCollection.cab dalla cartella seguente:

        ..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0

      2. Inserire IntelliTraceCollection.cab nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector

  3. Espandere IntelliTraceCollection.cab:

    1. Nel server dell'applicazione, aprire una finestra del prompt dei comandi come amministratore.

    2. Spostarsi nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector

    3. Utilizzare il comando expand, includendo il punto (.) alla fine, per espandere IntelliTraceCollection.cab:

      expand /f:* IntelliTraceCollection.cab .

      [!NOTA]

      Il punto (.) preserva le sottocartelle che contengono i piani di raccolta localizzati.

Configurare le autorizzazioni per la directory dell'agente di raccolta

  1. Nel server dell'applicazione, aprire una finestra del prompt dei comandi come amministratore.

  2. Utilizzare il comando icacls di Windows per dare le autorizzazioni complete all'amministratore del server alla directory dell'agente di raccolta.Ad esempio:

    icacls "C:\IntelliTraceCollector" /grant "<Domain\AdministratorID>":F

  3. Per raccogliere dati per un'applicazione Web o per un'applicazione SharePoint:

    1. Dare all'utente che esegue i cmdlets di IntelliTrace PowerShell le autorizzazioni complete alla directory dell'agente di raccolta.

      Ad esempio:

      icacls "C:\IntelliTraceCollector" /grant "<Domain\UserID>":F

    2. Fornire al pool di applicazioni per l'applicazione Web o per l'applicazione SharePoint le autorizzazioni di lettura e di esecuzione alla directory dell'agente di raccolta.

      Ad esempio:

      • Per un'applicazione Web nel pool di applicazioni DefaultAppPool:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX

      • Per un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:

        icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX

Installare i cmdlet di IntelliTrace PowerShell per raccogliere dati per le applicazioni Web o per le applicazioni SharePoint

  1. Nel server dell'applicazione, assicurarsi che PowerShell sia abilitato.Nella maggior parte delle versioni di Windows Server è possibile aggiungere questa funzionalità nello strumento di amministrazione Server Manager.

    Aggiunta di PowerShell tramite Server Manager

  2. Installare i cmdlets di IntelliTrace PowerShell per le applicazioni Web

    1. Aprire una finestra di comando PowerShell come amministratore.

      1. Scegliere Avvio, Tutti i programmi, Accessori, Windows PowerShell.

      2. Scegliere uno dei passaggi riportati di seguito:

        • Nei sistemi operativi a 64 bit, aprire il menu di scelta rapida per Windows PowerShell.Scegliere Esegui come amministratore.

        • Nei sistemi operativi a 32 bit, aprire il menu di scelta rapida per Windows PowerShell (x86).Scegliere Esegui come amministratore.

    2. Nella finestra di comando di PowerShell, utilizzare il comando Import-Module per importare Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.

      Ad esempio:

      Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"

Impostare le autorizzazioni per la directory del file .iTrace

  1. Nel server dell'applicazione, creare la directory del file .iTrace, ad esempio: C:\IntelliTraceLogFiles

    [!NOTA]

    • Per evitare di rallentare l'applicazione, scegliere una posizione in un disco locale ad alta velocità che non è molto attivo.

    • È possibile memorizzare i file .iTrace e i file dell'agente di raccolta nella stessa posizione.Tuttavia, se si dispone di un'applicazione Web o di un'applicazione SharePoint, assicurarsi che questa posizione si trovi al di fuori della directory che ospita l'applicazione.

    Nota sulla sicurezzaNota sulla sicurezza
    • Limitare la directory di file .iTrace solo alle identità che vengono eseguite con l'agente di raccolta.Un file .iTrace può contenere informazioni riservate, come dati degli utenti, database, altri percorsi di origine e stringhe di connessione poiché IntelliTrace consente di raccogliere e salvare tutti i dati passati nei parametri del metodo o i dati ritornati.

    • Assicurarsi che chi può aprire i file .iTrace disponga delle autorità per visualizzare i dati privati.Prestare attenzione quando si condividono i file .iTrace.Se altri utenti devono accedervi, copiare i file in un percorso condiviso sicuro.

  2. Per un'applicazione Web o un'applicazione SharePoint, assegnare al pool di applicazioni le autorizzazioni complete nella directory del file .iTrace.È possibile utilizzare il comando icacls di Windows oppure utilizzare Esplora risorse (o Esplora file).

    Ad esempio:

    • Per configurare le autorizzazioni con il comando icacls di Windows:

      • Per un'applicazione Web nel pool di applicazioni DefaultAppPool:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F

      • Per un'applicazione SharePoint nel pool di applicazioni SharePoint - 80:

        icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F

      In alternativa

    • Per configurare le autorizzazioni con Esplora risorse (o Esplora file):

      1. Aprire Proprietà per la directory del file .iTrace.

      2. Nella scheda Sicurezza, selezionare Modifica, Aggiungi.

      3. Assicurarsi che Identità di protezione incorporate sia visualizzato nella casella Selezionare questo tipo di oggetto.Se non è visualizzato, scegliere Tipi di oggetto per aggiungerlo.

      4. Assicurarsi che il proprio computer locale sia visualizzato nella casella Da questo percorso.Se non è visualizzato, scegliere Percorsi per modificarlo.

      5. Nella casella Immettere i nomi degli oggetti da selezionare, aggiungere il pool di applicazioni per l'applicazione Web o per l'applicazione SharePoint.

      6. Scegliere Controlla nomi per risolvere il nome.Scegliere OK.

      7. Verificare che il pool di applicazioni disponga del Controllo completo.

Raccogliere dati da un'applicazione Web o da un'applicazione SharePoint

  1. Per avviare la raccolta dei dati, aprire una finestra di comando di PowerShell come amministratore, quindi eseguire il comando:

    Start-IntelliTraceCollection"<ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>

    Nota importanteImportante

    Dopo avere eseguito questo comando, digitare Y per confermare che si desidera avviare la raccolta dei dati.

    Ad esempio, per raccogliere dati da un'applicazione SharePoint nel pool di applicazioni di SharePoint - 80 :

    Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"

    PoolApplicazioni

    Il nome del pool di applicazioni in cui viene eseguita l'applicazione

    PathToCollectionPlan

    Il percorso a un piano di raccolta, un file .xml che configura le impostazioni per l'agente di raccolta.

    È possibile specificare un piano fornito con l'agente di raccolta.Il successivo piano funziona per le applicazioni Web e per le applicazioni SharePoint:

    • collection_plan.ASP.NET.default.xml

      Consente di raccogliere solo gli eventi IntelliTrace e gli eventi SharePoint, incluse le eccezioni, le chiamate di database e le richieste del server Web.

    • collection_plan.ASP.NET.tr ace.xml

      Raccoglie le chiamate di funzione e tutti i dati in collection_plan.ASP.NET.default.xml.Questo piano è valido per l'analisi dettagliata, ma potrebbe rallentare l'applicazione di più rispetto a collection_plan.ASP.NET.default.xml.

    Per evitare di rallentare l'applicazione, personalizzare questi piani o creare un proprio piano.Ai fini della sicurezza, inserire tutti i piani personalizzati nello stesso percorso protetto dei file dell'agente di raccolta.Vedere la pagina relativa alla creazione e alla personalizzazione dei piani di raccolta IntelliTrace e How can I get the most data without slowing down my app?

    NotaNota
    Per impostazione predefinita, la dimensione massima del file .iTrace è 100 MB.Quando il file .iTrace raggiunge questo limite, l'agente di raccolta elimina le voci immesse per prime per fare spazio a quelle più recenti.Per cambiare il limite, modificare l'attributo MaximumLogFileSize del piano di raccolta.

    Dove è possibile trovare versioni localizzate di questi piani di raccolta?

    Si possono trovare i piani localizzati nelle sottocartelle dell'agente di raccolta.

    FullPathToITraceFileDirectory

    Il percorso completo della directory del file .iTrace.

    Nota sulla sicurezzaNota sulla sicurezza
    Immettere il percorso completo, non un percorso relativo.

    L'agente di raccolta si connette al pool di applicazioni e avvia la raccolta di dati.

    È possibile aprire il file .iTrace al momento? No, il file è bloccato durante la raccolta dei dati.

  2. Riprodurre il problema.

  3. Per eseguire uno snapshot del file .iTrace, utilizzare questa sintassi:

    Checkpoint-IntelliTraceCollection"<ApplicationPool>"

  4. Per controllare lo stato della raccolta, utilizzare questa sintassi:

    Get-IntelliTraceCollectionStatus

  5. Per interrompere la raccolta dei dati, utilizzare la seguente sintassi:

    Stop-IntelliTraceCollection"<ApplicationPool>"

    Nota importanteImportante

    Dopo avere eseguito questo comando, digitare Y per confermare che si desidera arrestare la raccolta dei dati.In caso contrario, l'agente di raccolta potrebbe continuare a raccogliere dati, il file iTrace rimarrà bloccato, oppure il file potrebbe non contenere dati utili.

  6. Open the .iTrace file in Visual Studio Ultimate.

Raccogliere i dati da un'applicazione gestita

  1. Per avviare l'applicazione e raccogliere i dati contemporaneamente, utilizzare questa sintassi:

    <FullPathToIntelliTraceCollectorExecutable>\IntellitraceSC.exe launch /cp:<PathToCollectionPlan>/f:<FullPathToITraceFileDirectoryAndFileName><PathToAppExecutableFileAndFileName>

    Ad esempio, per raccogliere dati da un'applicazione denominata MyApp:

    C:\IntelliTraceCollector\IntelliTraceSC.exe launch /cp:"C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" /f:"C:\IntelliTraceLogFiles\MyApp.itrace" "C:\MyApp\MyApp.exe"

    FullPathToIntelliTraceCollectorExecutable

    Il percorso completo dell'eseguibile dell'agente di raccolta, IntelliTraceSC.exe.

    PathToCollectionPlan

    Il percorso a un piano di raccolta, un file .xml che configura le impostazioni per l'agente di raccolta.

    È possibile specificare un piano fornito con l'agente di raccolta.I successivi piani funzionano per le applicazioni gestite:

    • collection_plan.ASP.NET.default.xml

      Raccoglie solo eventi IntelliTrace, incluse le eccezioni, le chiamate di database e le richieste del server Web.

    • collection_plan.ASP.NET.tr ace.xml

      Raccoglie le chiamate di funzione e tutti i dati in collection_plan.ASP.NET.default.xml.Questo piano è valido per l'analisi dettagliata, ma potrebbe rallentare l'applicazione di più rispetto a collection_plan.ASP.NET.default.xml.

    Per evitare di rallentare l'applicazione, personalizzare questi piani o creare un proprio piano.Ai fini della sicurezza, inserire tutti i piani personalizzati nello stesso percorso protetto dei file dell'agente di raccolta.Vedere la pagina relativa alla creazione e alla personalizzazione dei piani di raccolta IntelliTrace e How can I get the most data without slowing down my app?

    NotaNota
    Per impostazione predefinita, la dimensione massima del file .iTrace è 100 MB.Quando il file .iTrace raggiunge questo limite, l'agente di raccolta elimina le voci immesse per prime per fare spazio a quelle più recenti.Per cambiare il limite, modificare l'attributo MaximumLogFileSize del piano di raccolta.

    Dove è possibile trovare versioni localizzate di questi piani di raccolta?

    Si possono trovare i piani localizzati nelle sottocartelle dell'agente di raccolta.

    FullPathToITraceFileDirectoryAndFileName

    Il percorso completo della directory del file .iTrace e il nome del file .iTrace con estensione .itrace.

    Nota sulla sicurezzaNota sulla sicurezza
    Immettere il percorso completo, non un percorso relativo.

    PathToAppExecutableFileAndFileName

    Il percorso e il nome del file della propria applicazione gestita

  2. Arrestare la raccolta di dati uscendo dall'applicazione.

  3. Open the .iTrace file in Visual Studio Ultimate.

Aprire il file .iTrace in Visual Studio Ultimate

  1. Spostare il file .iTrace o copiarlo su un computer con Visual Studio Ultimate.

  2. Fare doppio clic sul file .iTrace all'esterno di Visual Studio, oppure aprire il file da Visual Studio.

    Viene visualizzata la pagina Riepilogo IntelliTrace.Nella maggior parte delle sezioni, è possibile rivedere gli eventi o gli altri elementi, scegliere un elemento e avviare il debug con IntelliTrace nel punto e nel momento in cui l'evento si è verificato.Vedere Eseguire il debug dell'app con file di log di IntelliTrace (.iTrace).

    [!NOTA]

    Per eseguire il debug con IntelliTrace e per scorrere il codice, è necessario disporre dei file sorgenti e dei file di simboli corrispondenti.Assicurarsi che i file dei simboli si trovino nel percorso dei simboli di Visual Studio.In caso contrario, Visual Studio non è in grado di risolvere i percorsi di origine e visualizza il messaggio "Simboli non trovati nel server dei simboli". Vedere Trovare file di simboli (.pdb), di origine e binari.

Come è possibile ottenere il maggior numero possibile di dati senza rallentare l'applicazione?

IntelliTrace consente di raccogliere molti dati, pertanto l'impatto sulle prestazioni dell'applicazione dipende dai dati che IntelliTrace raccoglie e dal tipo di codice che analizza.Vedere la pagina relativa all'ottimizzazione della raccolta di IntelliTrace sui server di produzione.

Di seguito sono elencati alcuni metodi per ottenere il maggior numero possibile di dati senza rallentare l'applicazione:

  • Eseguire l'agente di raccolta solo quando si prevede che sia presente un problema, o quando è possibile riprodurre il problema.

    Avviare la raccolta, riprodurre il problema e quindi arrestare la raccolta.Aprire il file .iTrace in Visual Studio Ultimate ed esaminare i dati.Vedere Open the IntelliTrace log file in Visual Studio Ultimate..

  • Per le applicazioni Web e per le applicazioni SharePoint, l'agente di raccolta registra i dati per ogni applicazione che condivide il pool di applicazioni specificato.Ciò potrebbe rallentare qualsiasi applicazione che condivide lo stesso pool di applicazioni, anche se è possibile specificare solo moduli per una singola applicazione in un piano di raccolta.

    Per impedire che l'agente di raccolta rallenti le altre applicazioni, includere ogni applicazione nel proprio pool di applicazioni.

  • Rivedere gli eventi nel piano di raccolta per cui IntelliTrace raccoglie i dati.Modificare il piano di raccolta disabilitando gli eventi che non sono pertinenti o non interessano.

    Per disabilitare un evento, impostare l'attributo enabled per l'elemento <DiagnosticEventSpecification> a false:

    <DiagnosticEventSpecification enabled="false">

    Se l'attributo enabled non esiste, l'evento viene abilitato.

    In che modo questo determina un miglioramento delle prestazioni?

    • È possibile ridurre il tempo di avvio disabilitando gli eventi che non sono attinenti all'applicazione.Ad esempio, disabilitare gli eventi di Windows Workflow per le applicazioni che non utilizzano Windows Workflow.

    • È possibile migliorare sia le prestazioni di avvio sia quelle in fase di esecuzione disabilitando gli eventi del Registro di sistema per le applicazioni che accedono al Registro di sistema ma che non presentano problemi con le relative impostazioni.

  • Rivedere i moduli nel piano di raccolta per cui IntelliTrace raccoglie i dati.Modificare il piano di raccolta per includere solo i moduli che interessano:

    1. Aprire il piano di raccolta.Trovare l'elemento <ModuleList>.

    2. In <ModuleList> impostare l'attributo isExclusionList su false.

    3. Utilizzare l'elemento <Name> per specificare ogni modulo con uno dei seguenti elementi: nome file, valore stringa per includere i moduli il cui nome contiene la stringa e chiave pubblica.

    Ad esempio, per raccogliere i dati solo dal modulo Web principale dell'applicazione Web Fabrikam Fiber, creare un elenco analogo a quello riportato di seguito:

    <ModuleList isExclusionList="false">
       <Name>FabrikamFiber.Web.dll</Name>
    </ModuleList>
    

    Per raccogliere i dati da qualsiasi modulo il cui nome include "Fabrikam", creare un elenco analogo a quello riportato di seguito:

    <ModuleList isExclusionList="false">
       <Name>Fabrikam</Name>
    </ModuleList>
    

    Per raccogliere i dati dai moduli specificando i relativi token di chiave pubblica, creare un elenco analogo a quello riportato di seguito:

    <ModuleList isExclusionList="false">
       <Name>PublicKeyToken:B77A5C561934E089</Name>
       <Name>PublicKeyToken:B03F5F7F11D50A3A</Name>
       <Name>PublicKeyToken:31BF3856AD364E35</Name>
       <Name>PublicKeyToken:89845DCD8080CC91</Name>
       <Name>PublicKeyToken:71E9BCE111E9429C</Name>
    </ModuleList>
    

    In che modo questo determina un miglioramento delle prestazioni?

    Questo riduce la quantità di informazioni relative alle chiamate ai metodi e altri dati di strumentazione raccolti da IntelliTrace durante l'avvio e l'esecuzione dell'applicazione.Questi dati consentono di:

    • Analizzare le istruzioni del codice al termine della raccolta dei dati.

    • Esaminare i valori passati alle chiamate di funzione e restituiti da queste ultime.

    Perché non escludere i moduli?

    Per impostazione predefinita, i piani di raccolta escludono i moduli impostando l'attributo isExclusionList su true.Tuttavia, anche escludendo determinati moduli è possibile che vengano raccolti dati relativi a moduli che non soddisfano i criteri dell'elenco e che non interessano, come ad esempio moduli di terze parti o open source.

  • Esistono dati che IntelliTrace non raccoglie?

    Sì. Per ridurre l'impatto sulle prestazioni, IntelliTrace limita la raccolta ai valori dei tipi di dati primitivi passati ai metodi e restituiti da questi ultimi e ai valori dei tipi di dati primitivi nei campi su oggetti di livello superiore passati ai metodi e restituiti da questi ultimi.

    Ad esempio, si supponga di avere una firma del metodo AlterEmployee che accetta un id Integer e un oggetto Employeeoldemployee:

    public Employee AlterEmployee(int id, Employee oldemployee)

    Il tipo Employee ha i seguenti attributi: Id, Name e HomeAddress.Esiste una relazione di associazione tra Employee e il tipo Address.

    Relazione tra dipendente e indirizzo

    L'agente di raccolta registra i valori per id, Employee.Id, Employee.Name e l'oggetto Employee restituito dal metodo AlterEmployee.Tuttavia, non registra informazioni sull'oggetto Address diverse da quelle che indicano se è null oppure no.Inoltre, non registra i dati sulle variabili locali nel metodo AlterEmployee a meno che non vengano utilizzate da altri metodi come parametri. In questo caso, vengono registrate come parametri di metodo.

In quale altro modo è possibile ottenere i dati IntelliTrace?

Dove è possibile ottenere ulteriori informazioni?

Eseguire il debug dell'app con file di log di IntelliTrace (.iTrace)

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

Hh398365.collapse_all(it-it,VS.110).gifBlog

Pagina relativa all'utilizzo in remoto dell'agente di raccolta autonomo di IntelliTrace

Pagina relativa alla creazione e alla personalizzazione dei piani di raccolta IntelliTrace

Pagina relativa all'ottimizzazione della raccolta di IntelliTrace sui server di produzione

Blog su Visual Studio ALM + TFS

Hh398365.collapse_all(it-it,VS.110).gifForum

Pagina relativa al debugger di Visual Studio

Hh398365.collapse_all(it-it,VS.110).gifVideo

Video Channel 9: Raccolta e analisi dei dati IntelliTrace in produzione