Coletar dados do IntelliTrace fora do Visual Studio com o coletor autônomo
Para depurar os aplicativos em produção ou em outros ambientes, use o coletor do IntelliTrace para salvar dados de diagnóstico em um arquivo de log do IntelliTrace (arquivo .iTrace).Isso permite que você registre o que aconteceu no seu aplicativo sem instalar o Visual Studio ou alterar o ambiente do seu aplicativo.Quando terminar de coletar dados, basta excluir o coletor para desinstalá-lo.
Assista o IntelliTrace em ação: Coletando e analisando dados do IntelliTrace em produção para depuração (exibição do Channel 9)
Requisitos
.NET Framework 3.5, 4 ou 4.5
Visual Studio Ultimate em um computador de desenvolvimento ou em outro computador para abrir arquivos .iTrace
Observação Certifique-se de salvar seus arquivos de símbolo (.pdb).Para depurar com o IntelliTrace e percorrer o código, você deverá ter os arquivos de origem e os arquivos de símbolo correspondentes.Consulte Localizar símbolo (.pdb), origem e arquivos binários.
FAQ
Que aplicativos funcionam com o coletor?
Como eu começo?
Como posso obter a maioria de dados sem tornar meu aplicativo mais lento?
Onde mais posso obter dados do IntelliTrace?
Que aplicativos funcionam com o coletor?
Aplicativos da Web ASP.NET no IIS (Serviços de Informação da Internet versão 7.0, 7.5 e 8.0
Aplicativos do SharePoint 2010
Aplicativos da área de trabalho gerenciados (arquivos.exe)
Como eu começo?
Instalar o coletor
Set up permissions for the collector directory.
Instale cmdlets do PowerShell do IntelliTrace para coletar dados para aplicativos da Web ou aplicativos do SharePoint.
Configurar permissões para o diretório do arquivo .iTrace
Coletar dados de um aplicativo Web ou de um aplicativo do SharePoint
- ou -
Coletar dados de um aplicativo gerenciado
Abra o arquivo .iTrace no Visual Studio Ultimate
Instalar o coletor
No servidor do seu aplicativo, crie o diretório do coletor, por exemplo: C:\IntelliTraceCollector
Obtenha o coletor do Microsoft Download Center ou da pasta de instalação do Visual Studio:
Central de Download da Microsoft:
No servidor do seu aplicativo, vá para Coletor do IntelliTrace para o Visual Studio.
Ao lado de IntelliTraceCollector.exe, escolha Baixar.
Salve IntelliTraceCollector.exe no diretório do coletor, por exemplo: C:\IntelliTraceCollector
Execute o IntelliTraceCollector.exe.Isto extrai o arquivo IntelliTraceCollection.cab.
- ou -
Pasta de instalação do Visual Studio:
Observação Para obter o coletor que dá suporte a eventos de diagnóstico para aplicativos do SharePoint 2010, baixe o Coletor do IntelliTrace para o Visual Studio ou certifique-se de ter o Visual Studio 2012.1 instalado.
Copie IntelliTraceCollection.cab da pasta a seguir:
..\Microsoft Visual Studio 11.0\Common7\IDE\CommonExtensions\Microsoft\IntelliTrace\11.0.0
Coloque IntelliTraceCollection.cab no diretório do coletor, por exemplo: C:\IntelliTraceCollector
Expand IntelliTraceCollection.cab:
No servidor do seu aplicativo, abra uma janela de prompt de comando como administrador.
Procure pelo diretório do coletor, por exemplo: C:\IntelliTraceCollector
Use o comando expand, incluindo o ponto (.) no final, para expandir IntelliTraceCollection.cab:
expand /f:* IntelliTraceCollection.cab .
Observação O ponto (.) preserva as subpastas que contêm planos de coleta localizados.
Configurar permissões para o diretório do coletor
No servidor do seu aplicativo, abra uma janela de prompt de comando como administrador.
Use o comando icacls do Windows para dar ao administrador do servidor permissões completas para o diretório do coletor.Por exemplo:
icacls "C:\IntelliTraceCollector" /grant "<Domínio\AdministratorID>":F
Para coletar dados para um aplicativo Web ou do SharePoint:
Dê à pessoa que executará os cmdlets do IntelliTrace PowerShell permissões completas para o diretório do coletor.
Por exemplo:
icacls "C:\IntelliTraceCollector" /grant "<Domínio\UserID>":F
Dê ao pool de aplicativos para o aplicativo da Web ou o aplicativo do SharePoint permissões de leitura e execução para o diretório do coletor.
Por exemplo:
Para um aplicativo da Web no pool de aplicativos DefaultAppPool:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\DefaultAppPool":RX
Para um aplicativo do SharePoint no pool de aplicativos SharePoint - 80:
icacls "C:\IntelliTraceCollector" /grant "IIS APPPOOL\SharePoint - 80":RX
Instale cmdlets do PowerShell do IntelliTrace para coletar dados para aplicativos da Web ou aplicativos do SharePoint.
No servidor do seu aplicativo, verifique se o PowerShell está habilitado.Na maioria das versões do Windows Server, você pode adicionar esse recurso na ferramenta administrativa Gerenciador do Servidor.
Instalar os cmdlets do PowerShell do IntelliTrace.
Abra uma janela de comando do PowerShell como administrador.
Escolha Iniciar, Todos os Programas, Acessórios, Windows PowerShell.
Escolha uma das seguintes etapas:
Em sistemas operacionais de 64 bits, abra o menu de atalho para Windows PowerShell.Escolha Executar como administrador.
Em sistemas operacionais de 32 bits, abra o menu de atalho para Windows PowerShell (x86).Escolha Executar como administrador.
Na janela de comando do PowerShell, use o comando Import-Module para importar Microsoft.VisualStudio.IntelliTrace.PowerShell.dll.
Por exemplo:
Import-Module "C:\IntelliTraceCollector\Microsoft.VisualStudio.IntelliTrace.PowerShell.dll"
Configurar permissões para o diretório do arquivo .iTrace
No servidor do seu aplicativo, crie o diretório do arquivo .iTrace, por exemplo: C:\IntelliTraceLogFiles
Observação Para evitar que seu aplicativo fique mais lento, escolha um local em um disco de alta velocidade local que não seja muito ativo.
Você pode colocar os arquivos .iTrace e os arquivos do coletor no mesmo lugar.No entanto, se você tiver um aplicativo da Web ou um aplicativo do SharePoint, certifique-se de que esse local esteja fora do diretório que hospeda o aplicativo.
Observação de segurança Restrinja o diretório do arquivo de .iTrace a apenas as identidades que tenham de trabalhar com o coletor.Um arquivo .iTrace pode conter informações confidenciais, como dados de usuários, bancos de dados, outros locais de origem e cadeias de conexão, porque o IntelliTrace pode registrar quaisquer dados que passem para os parâmetros de método ou como valores de retorno.
Certifique-se de que aqueles que possam abrir arquivos .iTrace tenham autoridade para exibir dados confidenciais.Tenha cuidado ao compartilhar arquivos .iTrace.Se for necessário que outras pessoas tenham acesso, copie os arquivos para um local compartilhado seguro.
Para um aplicativo da Web ou aplicativo do SharePoint, dê a seu pool de aplicativos permissões completas para o diretório do arquivo .iTrace.Você pode usar o comando icacls do Windows ou use o Windows Explorer (ou o Explorador de Arquivos).
Por exemplo:
Para configurar permissões com o comando icacls do Windows:
Para um aplicativo da Web no pool de aplicativos DefaultAppPool:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\DefaultAppPool":F
Para um aplicativo do SharePoint no pool de aplicativos SharePoint - 80:
icacls "C:\IntelliTraceLogFiles" /grant "IIS APPPOOL\SharePoint - 80":F
- ou -
Para configurar permissões com o Windows Explorer (ou o Explorador de Arquivos):
Abra Propriedades para o diretório do arquivo .iTrace.
Na guia Segurança, escolha Editar, Adicionar.
Certifique-se de que Entidades de segurança interna apareça na caixa de Selecionar este tipo de objeto .Se não estiver presente, escolha Tipos de Objeto para adicioná-lo.
Certifique-se de que o seu computador local apareça na caixa Deste local.Se não estiver presente, escolha Locais para alterá-lo.
Na caixa Digite os nomes de objeto para selecionar , adicione o pool de aplicativos para o aplicativo da Web ou o aplicativo do SharePoint.
Escolha Verificar nomes para resolver o nome.Escolha OK.
Certifique-se de que o pool de aplicativos tenha Controle total.
Coletar dados de um aplicativo Web ou de um aplicativo do SharePoint
Para iniciar a coleta de dados, abra uma janela de comando de PowerShell como um administrador, então execute este comando:
Start-IntelliTraceCollection"<PoolDeAplicativos>"<CaminhoParaPlanoDeColeta><CaminhoCompletoParaDiretórioDoArquivoITrace>
Importante Depois de executar este comando, digite S para confirmar que você deseja começar a coletar dados.
Por exemplo, para coletar dados de um aplicativo do SharePoint no pool de aplicativos SharePoint - 80:
Start-IntelliTraceCollection "SharePoint - 80" "C:\IntelliTraceCollector\collection_plan.ASP.NET.default.xml" "C:\IntelliTraceLogFiles"
PooldeAplicativos
O nome do pool de aplicativos onde seu aplicativo é executado
PathToCollectionPlan
O caminho para um plano de coleção, um arquivo .xml que define as configurações do coletor.
Você pode especificar um plano que venha com o coletor.Os planos a seguir funcionam para aplicativos da Web e aplicativos do SharePoint:
collection_plan.ASP.NET.default.xml
Coleta somente eventos do IntelliTrace e eventos do SharePoint, incluindo exceções, chamadas de banco de dados e solicitações de servidor Web.
collection_plan.ASP.NET.trace.xml
Coleta chamadas de função e todos os dados em collection_plan.ASP.NET.default.xml.Este plano é bom para análise detalhada, mas pode deixar seu aplicativo um pouco mais lento ainda mais do que o collection_plan.ASP.NET.default.xml.
Para evitar que seu aplicativo fique mais lento, personalize estes planos ou crie seu próprio plano.Para segurança, coloque todos os planos personalizados no mesmo local seguro dos arquivos do coletor.Consulte Criando e personalizando planos de coleta do IntelliTrace e Como posso obter a maioria de dados sem tornar meu aplicativo mais lento?
ObservaçãoPor padrão, o tamanho máximo do arquivo .iTrace é de 100 MB.Quando o tamanho do arquivo .iTrace atingir esse limite, o coletor excluirá as entradas mais antigas do arquivo para dar espaço a entradas mais recentes.Para alterar esse limite, edite o atributo MaximumLogFileSize do plano de coleta.Onde posso encontrar versões localizadas desses planos de coleta?
Você pode encontrar planos localizados nas subpastas do coletor.
FullPathToITraceFileDirectory
O caminho completo do diretório do arquivo .iTrace.
Observação de segurançaFornecer o caminho completo, não um caminho relativo.O coletor é anexado ao pool de aplicativos e começa a coletar dados.
Posso abrir o arquivo .iTrace neste momento? Não, o arquivo fica bloqueado durante a coleta de dados.
Reproduza o problema.
Para obter um instantâneo do .iTrace, use esta sintaxe:
Checkpoint-IntelliTraceCollection"<PoolDeAplicativos>"
Para verificar o status da coleta, use esta sintaxe:
Get-IntelliTraceCollectionStatus
Para parar a coleta de dados, use esta sintaxe:
Stop-IntelliTraceCollection"<PoolDeAplicativos>"
Importante Depois de executar este comando, digite S para confirmar que você deseja parar de coletar dados.Caso contrário, o coletor pode continuar a coletar dados, o arquivo de iTrace permanecerá bloqueado ou o arquivo pode não conter quaisquer dados úteis.
Abra o arquivo .iTrace no Visual Studio Ultimate
Coletar dados de um aplicativo gerenciado
Para iniciar seu aplicativo e coletar dados ao mesmo tempo, use esta sintaxe:
<CaminhoCompletoParaExecutávelDoColetorDoIntelliTrace>\ IntellitraceSC.exe lançamento /cp:<CaminhoParaPlanoDeColeta>/f:<CaminhoCompletoParaDiretórioDoArquivoENomedoArquivoITrace><CaminhoParaArquivoExecutávelENomeDoArquivoDoAplicativo>
Por exemplo, para coletar dados de um aplicativo chamado 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
O caminho completo para o executável do coletor, IntelliTraceSC.exe
PathToCollectionPlan
O caminho para um plano de coleção, um arquivo .xml que define as configurações do coletor.
Você pode especificar um plano que venha com o coletor.Os planos a seguir funcionam para aplicativos gerenciados:
collection_plan.ASP.NET.default.xml
Coleta somente eventos do IntelliTrace, incluindo exceções, chamadas de banco de dados e solicitações de servidor Web.
collection_plan.ASP.NET.trace.xml
Coleta chamadas de função e todos os dados em collection_plan.ASP.NET.default.xml.Este plano é bom para análise detalhada, mas pode deixar seu aplicativo um pouco mais lento ainda mais do que o collection_plan.ASP.NET.default.xml.
Para evitar que seu aplicativo fique mais lento, personalize estes planos ou crie seu próprio plano.Para segurança, coloque todos os planos personalizados no mesmo local seguro dos arquivos do coletor.Consulte Criando e personalizando planos de coleta do IntelliTrace e Como posso obter a maioria de dados sem tornar meu aplicativo mais lento?
ObservaçãoPor padrão, o tamanho máximo do arquivo .iTrace é de 100 MB.Quando o tamanho do arquivo .iTrace atingir esse limite, o coletor excluirá as entradas mais antigas do arquivo para dar espaço a entradas mais recentes.Para alterar esse limite, edite o atributo MaximumLogFileSize do plano de coleta.Onde posso encontrar versões localizadas desses planos de coleta?
Você pode encontrar planos localizados nas subpastas do coletor.
FullPathToITraceFileDirectoryAndFileName
O caminho completo do diretório de arquivo .iTrace e nome de arquivo .iTrace com a extensão .itrace.
Observação de segurançaFornecer o caminho completo, não um caminho relativo.PathToAppExecutableFileAndFileName
O caminho e o nome de arquivo do seu aplicativo gerenciado
Pare a coleta de dados ao sair do aplicativo.
Abra o arquivo .iTrace no Visual Studio Ultimate
Abra o arquivo .iTrace no Visual Studio Ultimate
Mova o arquivo .iTrace ou copie-o para um computador com Visual Studio Ultimate.
Clique duas vezes no arquivo .iTrace fora do Visual Studio ou abra o arquivo de dentro do Visual Studio.
O Visual Studio mostra a página Resumo do IntelliTrace.Na maioria das seções, você pode examinar eventos ou outros itens, escolher um item e iniciar a depuração com o IntelliTrace no ponto onde e quando um evento ocorreu.Consulte Depurar seu aplicativo com arquivos de log do IntelliTrace (.iTrace).
Observação Para depurar com o IntelliTrace e percorrer o código, você deverá ter os arquivos de origem e os arquivos de símbolo correspondentes.Verifique se os arquivos de símbolo estão no caminho do símbolo do Visual Studio.Caso contrário, o Visual Studio não poderá resolver os locais de origem e não mostrará a mensagem "Símbolos não localizados". Consulte Localizar símbolo (.pdb), origem e arquivos binários.
Como posso obter a maioria de dados sem tornar meu aplicativo mais lento?
O IntelliTrace pode coletar muitos dados e, portanto, o impacto no desempenho do seu aplicativo depende dos dados que o IntelliTrace coleta e o tipo de código que ele analisa.Consulte Otimizando o IntelliTrace Collection em servidores de produção.
Estas são algumas das maneiras de obter a maioria de dados sem tornar seu aplicativo mais lento:
Execute o coletor somente quando achar que há um problema ou quando for possível reproduzir o problema.
Inicie a coleta, reproduza o problema e então pare a coleta.Abra o arquivo .iTrace no Visual Studio Ultimate e examine os dados.Consulte Abra o arquivo .iTrace no Visual Studio Ultimate.
Para aplicativos da Web e aplicativos do SharePoint, o coletor grava os dados de todos os aplicativos da Web que compartilham o pool de aplicativos especificado.Isso poderá tornar mais lento qualquer aplicativo que compartilhe o mesmo pool de aplicativos, mesmo que você só especifique módulos para um único aplicativo em um plano de coleta.
Para impedir que o coletor torne outros aplicativos mais lentos, hospede cada aplicativo em seu próprio pool de aplicativos.
Examine os eventos no plano de coleta para o qual o IntelliTrace coleta dados.Edite o plano de coleta para desabilitar eventos que não sejam relevantes ou que não sejam do seu interesse.
Para desabilitar um evento, defina o atributo enabled para o elemento <DiagnosticEventSpecification> como false:
<DiagnosticEventSpecification enabled="false">
Se o atributo enabled não existir, o evento está habilitado.
Como isso melhora o desempenho?
Você pode reduzir o tempo de inicialização ao desabilitar eventos que não sejam relevantes para o aplicativo.Por exemplo, desabilite eventos do Fluxo de Trabalho do Windows para aplicativos que não usem o Fluxo de Trabalho do Windows.
Você pode melhorar o desempenho de inicialização e de tempo de execução ao desabilitar eventos do Registro para aplicativos que acessam o Registro mas que não mostram problemas nas configurações do Registro.
Examine os módulos no plano de coleta para o qual o IntelliTrace coleta dados.Edite o plano de coleta para incluir somente os módulos de seu interesse:
Abra o plano de coleta.Encontre o elemento <ModuleList>.
Em <ModuleList>, defina o atributo isExclusionList como false.
Use o elemento <Name> para especificar cada módulo com um destes: nome do arquivo, valor de cadeia de caracteres para incluir qualquer módulo cujo nome contenha essa cadeia de caracteres ou chave pública.
Por exemplo, para coletar dados apenas do módulo Web principal do aplicativo da Web Fiber da Fabrikam, crie uma lista como esta:
<ModuleList isExclusionList="false"> <Name>FabrikamFiber.Web.dll</Name> </ModuleList>
Para coletar dados de qualquer módulo cujo nome inclua "Fabrikam", crie uma lista assim:
<ModuleList isExclusionList="false"> <Name>Fabrikam</Name> </ModuleList>
Para coletar dados de módulos ao especificar seus tokens de chave pública, crie uma lista assim:
<ModuleList isExclusionList="false"> <Name>PublicKeyToken:B77A5C561934E089</Name> <Name>PublicKeyToken:B03F5F7F11D50A3A</Name> <Name>PublicKeyToken:31BF3856AD364E35</Name> <Name>PublicKeyToken:89845DCD8080CC91</Name> <Name>PublicKeyToken:71E9BCE111E9429C</Name> </ModuleList>
Como isso melhora o desempenho?
Isso reduz a quantidade de informações de chamada de método e outros dados de instrumentação que o IntelliTrace coleta quando o aplicativo é iniciado e executado.Esses dados permitem:
Repassar o código após a coleta dos dados.
Examinar os valores passados para chamadas de função e retornados delas.
Por que não excluir os módulos?
Por padrão, os planos de coleta excluem módulos por meio da configuração do atributo isExclusionList como true.Entretanto, a exclusão de módulos ainda pode resultar na coleta de dados de módulos que não atendam aos critérios de lista e que não interessem a você, como módulos de terceiros ou de código aberto.
Existe algum tipo de dados que o IntelliTrace não colete?
Sim, para reduzir o impacto no desempenho, o IntelliTrace restringe a coleta de dados aos valores dos tipos de dados primitivos passados para métodos e retornados deles e aos valores de tipos de dados primitivos nos campos em objetos de alto nível passados para métodos e retornados deles.
Por exemplo, suponha que você tenha uma assinatura de método AlterEmployee que aceita uma id de método e um objeto Employeeoldemployee:
public Employee AlterEmployee(int id, Employee oldemployee)
O tipo de Employee possui os seguintes atributos: Id, Name e HomeAddress.Existe uma relação de associação entre Employee e o tipo de Address .
O coletor registra valores para id, Employee.Id, Employee.Name e o objeto Employee retornado pelo método AlterEmployee .Entretanto, o coletor não registra informações sobre o objeto Address, a não ser se ele foi nulo ou não.O coletor também não grava dados sobre variáveis locais no método AlterEmployee a menos que outros métodos usem essas variáveis locais como parâmetros no ponto em que eles são gravados como parâmetros do método.
Onde mais posso obter dados do IntelliTrace?
De uma sessão de depuração do IntelliTrace no Visual Studio Ultimate, consulte Gravar execução de código com o IntelliTrace para depuração no Visual Studio.
De uma sessão de teste no Microsoft Test Manager, consulte Como: coletar dados de IntelliTrace para ajudar a depurar problemas de difícil.
Onde posso obter mais informações?
Depurar seu aplicativo com arquivos de log do IntelliTrace (.iTrace)
Depurar seu aplicativo gravando execução de código com o IntelliTrace
Blogs
Usando o IntelliTrace Standalone Collector remotamente
Consulte Criando e personalizando planos de coleta do IntelliTrace
Consulte Otimizando a coleta do IntelliTrace em servidores de produção.
Blog ALM + TFS do Visual Studio
Fóruns
Vídeos
Vídeo do Channel 9: Coletando e analisando dados do IntelliTrace