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?
Install the collector.
Set up permissions for the collector directory.
For Web apps and SharePoint applications, install the IntelliTrace PowerShell cmdlets.
Set up permissions for the .iTrace file directory.
Collect data from a Web app or SharePoint application.
In alternativa
Collect data from a managed app.
Open the .iTrace file in Visual Studio Ultimate.
Installare l'agente di raccolta
Nel server dell'applicazione, creare la directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
Ottenere l'agente di raccolta dall'Area download Microsoft oppure dalla cartella di installazione di Visual Studio:
Area download Microsoft:
Nel server dell'applicazione, andare alla pagina relativa all'agente di raccolta IntelliTrace per Visual Studio.
Accanto a IntelliTraceCollector.exe, scegliere Download.
Salvare IntelliTraceCollector.exe nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
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.
Copiare IntelliTraceCollection.cab dalla cartella seguente:
..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0
Inserire IntelliTraceCollection.cab nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
Espandere IntelliTraceCollection.cab:
Nel server dell'applicazione, aprire una finestra del prompt dei comandi come amministratore.
Spostarsi nella directory dell'agente di raccolta, ad esempio: C:\IntelliTraceCollector
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
Nel server dell'applicazione, aprire una finestra del prompt dei comandi come amministratore.
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
Per raccogliere dati per un'applicazione Web o per un'applicazione SharePoint:
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
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
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.
Installare i cmdlets di IntelliTrace PowerShell per le applicazioni Web
Aprire una finestra di comando PowerShell come amministratore.
Scegliere Avvio, Tutti i programmi, Accessori, Windows PowerShell.
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.
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
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 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.
-
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):
Aprire Proprietà per la directory del file .iTrace.
Nella scheda Sicurezza, selezionare Modifica, Aggiungi.
Assicurarsi che Identità di protezione incorporate sia visualizzato nella casella Selezionare questo tipo di oggetto.Se non è visualizzato, scegliere Tipi di oggetto per aggiungerlo.
Assicurarsi che il proprio computer locale sia visualizzato nella casella Da questo percorso.Se non è visualizzato, scegliere Percorsi per modificarlo.
Nella casella Immettere i nomi degli oggetti da selezionare, aggiungere il pool di applicazioni per l'applicazione Web o per l'applicazione SharePoint.
Scegliere Controlla nomi per risolvere il nome.Scegliere OK.
Verificare che il pool di applicazioni disponga del Controllo completo.
Raccogliere dati da un'applicazione Web o da un'applicazione SharePoint
Per avviare la raccolta dei dati, aprire una finestra di comando di PowerShell come amministratore, quindi eseguire il comando:
Start-IntelliTraceCollection"<ApplicationPool>"<PathToCollectionPlan><FullPathToITraceFileDirectory>
Importante 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?
NotaPer 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 sicurezzaImmettere 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.
Riprodurre il problema.
Per eseguire uno snapshot del file .iTrace, utilizzare questa sintassi:
Checkpoint-IntelliTraceCollection"<ApplicationPool>"
Per controllare lo stato della raccolta, utilizzare questa sintassi:
Get-IntelliTraceCollectionStatus
Per interrompere la raccolta dei dati, utilizzare la seguente sintassi:
Stop-IntelliTraceCollection"<ApplicationPool>"
Importante 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.
Open the .iTrace file in Visual Studio Ultimate.
Raccogliere i dati da un'applicazione gestita
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?
NotaPer 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 sicurezzaImmettere il percorso completo, non un percorso relativo.PathToAppExecutableFileAndFileName
Il percorso e il nome del file della propria applicazione gestita
Arrestare la raccolta di dati uscendo dall'applicazione.
Open the .iTrace file in Visual Studio Ultimate.
Aprire il file .iTrace in Visual Studio Ultimate
Spostare il file .iTrace o copiarlo su un computer con Visual Studio Ultimate.
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:
Aprire il piano di raccolta.Trovare l'elemento <ModuleList>.
In <ModuleList> impostare l'attributo isExclusionList su false.
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.
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?
Da una sessione di debug IntelliTrace in Visual Studio Ultimate (vedere Registrare l'esecuzione del codice con IntelliTrace per il debug in Visual Studio).
Da una sessione di test in Microsoft Test Manager (vedere Procedura: raccogliere dati di IntelliTrace per agevolare il debug di problemi complessi).
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
Blog
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
Forum
Pagina relativa al debugger di Visual Studio
Video
Video Channel 9: Raccolta e analisi dei dati IntelliTrace in produzione