Partilhar via


Acessar dados de rastreamento

O .NET TraceProcessing está disponível no NuGet com a seguinte ID de pacote:

Microsoft.Windows.EventTracing.Processing.All

Esse pacote permite que você acesse os dados de um arquivo de rastreamento. Caso ainda não tenha um arquivo de rastreamento, use o Windows Performance Recorder para criar um.

O seguinte exemplo de aplicativo de console mostra como acessar as linhas de comando de todos os processos contidos no rastreamento:

using Microsoft.Windows.EventTracing;
using Microsoft.Windows.EventTracing.Processes;
using System;

class Program
{
    static void Main(string[] args)
    {
        if (args.Length != 1)
        {
            Console.Error.WriteLine("Usage: <trace.etl>");
            return;
        }

        using (ITraceProcessor trace = TraceProcessor.Create(args[0]))
        {
            IPendingResult<IProcessDataSource> pendingProcessData = trace.UseProcesses();

            trace.Process();

            IProcessDataSource processData = pendingProcessData.Result;

            foreach (IProcess process in processData.Processes)
            {
                Console.WriteLine(process.CommandLine);
            }
        }
    }
}

Como usar o TraceProcessor

Para processar um rastreamento, chame TraceProcessor.Create. A interface principal é ITraceProcessor, e o uso dessa interface envolve o seguinte padrão:

  1. Primeiro, informe o processador sobre quais dados deseja usar de um rastreamento
  2. Em segundo lugar, processe o rastreamento; e
  3. Por fim, acesse os resultados.

Informar o processador sobre quais tipos de dados você deseja com antecedência significa que você não precisa gastar tempo processando grandes volumes de todos os tipos possíveis de dados de rastreamento. Em vez disso, o TraceProcessor faz apenas o trabalho necessário para fornecer os tipos específicos de dados solicitados.

Há algumas configurações de projeto que recomendamos usar com o TraceProcessor:

  1. Recomendamos executar os executáveis como 64 bits.

    O padrão do Visual Studio para um novo aplicativo de console C# .NET Framework é a opção Qualquer CPU com Preferência de 32 bits marcada. O padrão para .NET pode já ter a configuração recomendada.

    O processamento de rastreamento pode fazer uso intensivo de memória, especialmente com rastreamentos maiores. Por isso, recomendamos alterar o destino da plataforma para x64 (ou desmarcar a opção Preferência de 32 bits) nos executáveis que usam o TraceProcessor. Para alterar essas configurações, confira a guia Build em Propriedades do projeto. Para alterar essas definições em todas as configurações, defina o menu suspenso Configuração como Todas as Configurações, em vez do padrão de apenas a configuração atual.

  2. Sugerimos usar o NuGet com o modo PackageReference de estilo mais novo em vez do modo packages.config mais antigo.

    Para alterar o padrão para novos projetos, confira Ferramentas, Gerenciador de Pacotes NuGet, Configurações do Gerenciador de Pacotes, Gerenciamento de Pacotes e Formato de gerenciamento de pacotes padrão.

Origens de dados incorporadas

Um arquivo .etl pode capturar muitos tipos de dados em um rastreamento. Observe que os dados contidos em um arquivo .etl dependem dos provedores habilitados no momento da captura do rastreamento. A seguinte lista mostra os tipos de dados de rastreamento disponíveis no TraceProcessor:

Código Descrição Itens do WPA relacionados
trace.UseClassicEvents() Fornece eventos ETW clássicos de um rastreamento, que não incluem informações de esquema. Tabela Eventos Genéricos (quando o Tipo de Evento é Clássico ou WPP)
trace.UseConnectedStandbyData() Fornece dados de um rastreamento sobre o sistema que entra no modo de espera conectado e sai dele. Tabela Resumo de CS
trace.UseCpuIdleStates() Fornece dados de um rastreamento sobre os estados C da CPU. Tabela Estados Ociosos da CPU (quando o Tipo é Real)
trace.UseCpuSamplingData() Fornece dados de um rastreamento sobre o uso da CPU com base na amostragem periódica do ponteiro de instrução. Tabela Uso da CPU (Amostra)
trace.UseCpuSchedulingData() Fornece dados de um rastreamento sobre o agendamento de thread da CPU, incluindo opções de contexto e eventos de thread prontos. Tabela Uso da CPU (Precisa)
trace.UseDevicePowerData() Fornece dados de um rastreamento sobre os estados D do dispositivo. Tabela DState do Dispositivo
trace.UseDirectXData() Fornece dados de um rastreamento sobre a atividade do DirectX. Tabela Utilização de GPU
traceUseDiskIOData() Fornece dados de um rastreamento sobre a atividade de E/S de Disco. Tabela Uso de Disco
trace.UseEnergyEstimationData() Fornece dados de um rastreamento sobre o uso estimado de energia por processo do Mecanismo de Estimativa de Energia. Tabela Resumo do Mecanismo de Estimativa de Energia (por Processo)
trace.UseEnergyMeterData() Fornece dados de um rastreamento sobre o uso de energia medido da EMI (Interface do Medidor de Energia). Tabela Mecanismo de Estimativa de Energia (pela EMI)
trace.UseFileIOData() Fornece dados de um rastreamento sobre a atividade de E/S de Arquivo. Tabela E/S de Arquivo
trace.UseGenericEvents() Fornece eventos manifestos e de TraceLogging de um rastreamento. Tabela Eventos Genéricos (quando o Tipo de Evento é Manifesto ou de TraceLogging)
trace.UseHandles() Fornece dados parciais de um rastreamento sobre os identificadores de kernel ativos. Tabela Identificadores
trace.UseHardFaults() Fornece dados de um rastreamento sobre as falhas de página físicas. Tabela Falhas Físicas
trace.UseHeapSnapshots() Fornece dados de um rastreamento sobre o uso do heap de processo. Tabela Instantâneo de heap
trace.UseHypercalls() Fornece dados sobre hiperchamadas do Hyper-V que ocorreram durante um rastreamento.
trace.UseImageSections() Fornece dados de um rastreamento sobre as seções de uma imagem. Coluna Nome da Seção da tabela Uso da CPU (Amostra)
trace.UseInterruptHandlingData() Fornece dados de um rastreamento sobre a atividade de ISR (Rotina do Serviço de Interrupção) e de DPC (Chamada de Procedimento Adiada). Tabela DPC/ISR
trace.UseMarks() Fornece as marcas (rotuladas como carimbos de data/hora) de um rastreamento. Tabela Marcas
trace.UseMemoryUtilizationData() Fornece dados de um rastreamento sobre a utilização total de memória do sistema. Tabela Utilização de Memória
trace.UseMetadata() Fornece metadados de rastreamento disponíveis sem processamento posterior. Configuração do Sistema, Rastreamentos e Geral
trace.UsePlatformIdleStates() Fornece dados de um rastreamento sobre os estados ociosos da plataforma real e de destino de um sistema. Tabela Estado Ocioso da Plataforma
trace.UsePoolAllocations() Fornece dados de um rastreamento sobre o uso de memória do pool de kernel. Tabela Resumo do Pool
trace.UsePowerConfigurationData() Fornece dados de um rastreamento sobre a configuração de energia do sistema. Configuração do Sistema, Configurações de Energia
trace.UsePowerDependencyCoordinatorData() Fornece dados de um rastreamento sobre as fases do coordenador de dependência de energia ativa. Tabela Resumo da Fase de Notificação
trace.UseProcesses() Fornece dados sobre os processos ativos durante um rastreamento, bem como as respectivas imagens e PDBs. Tabela Processos, tabela Imagens e Hub de Símbolos
trace.UseProcessorCounters() Fornece dados de um rastreamento sobre os valores do contador de desempenho do processador do PCM (Monitor do Contador do Processador).
trace.UseProcessorFrequencyData() Fornece dados de um rastreamento sobre a frequência em que os processadores foram executados. Tabela Frequência do Processador (quando o Tipo é Real)
trace.UseProcessorProfileData() Fornece dados de um rastreamento sobre o perfil de energia do processador ativo. Tabela Perfis de Processador
trace.UseProcessorParkingData() Fornece dados de um rastreamento sobre quais processadores foram estacionados ou não. Tabela Estado de Estacionamento do Processador
trace.UseProcessorParkingLimits() Fornece dados de um rastreamento sobre o número máximo permitido de processadores não estacionados. Tabela Estado do Limite de Estacionamento do Núcleo
trace.UseProcessorQualityOfServiceData() Fornece dados de um rastreamento sobre a qualidade do nível de serviço de cada processador. Tabela Classe de QoS do Processador
trace.UseProcessorThrottlingData() Fornece dados de um rastreamento sobre a limitação da frequência máxima do processador. Tabela Restrições do Processador
trace.UseReadyBootData() Fornece dados de um rastreamento sobre a atividade de pré-busca de inicialização da Inicialização Pronta. Tabela Eventos de Inicialização Pronta
trace.UseReferenceSetData() Fornece dados de um rastreamento sobre as páginas de memória virtual usadas por processo. Tabela Conjunto de Referências
trace.UseRegionsOfInterest() Fornece regiões nomeadas de intervalos de interesse de um rastreamento, conforme especificado em um arquivo de configuração XML. Tabela Regiões de Interesse
trace.UseRegistryData() Fornece dados sobre a atividade do Registro durante um rastreamento. Tabela Registro
trace.UseResidentSetData() Fornece dados de um rastreamento sobre as páginas de memória virtual de cada processo que residiam na memória física. Tabela Conjunto de Residentes
trace.UseRundownData() Fornece dados de um rastreamento sobre os intervalos durante os quais ocorreu a coleta de dados de encerramento do rastreamento. Regiões sombreadas na linha do tempo do grafo
trace.UseScheduledTasks() Fornece dados sobre as tarefas agendadas executadas durante um rastreamento. Tabela Tarefas Agendadas
trace.UseServices() Fornece dados sobre os serviços que estavam ativos ou que tiveram o estado capturado durante um rastreamento. Tabela Serviços; Configuração do Sistema, Serviços
trace.UseStacks() Fornece dados sobre as pilhas registradas durante um rastreamento.
trace.UseStackEvents() Fornece dados sobre os eventos associados às pilhas registradas durante um rastreamento. Tabela Pilhas
trace.UseStackTags() Fornece um mapeador que agrupa as pilhas de um rastreamento em marcas de pilha, conforme especificado em um arquivo de configuração XML. Colunas como Marca de Pilha e Pilha (Marcas de Quadro)
trace.UseSymbols() Fornece a capacidade de carregar símbolos para um rastreamento. Configurar Caminhos de Símbolo; Carregar Símbolos
trace.UseSyscalls() Fornece dados sobre as syscalls ocorridas durante um rastreamento. Tabela Syscalls
trace.UseSystemMetadata() Fornece metadados gerais em todo o sistema de um rastreamento. Configuração do sistema
trace.UseSystemPowerSourceData() Fornece dados de um rastreamento sobre a fonte de energia do sistema ativo (CA ou CC). Tabela Fonte de Energia do Sistema
trace.UseSystemSleepData() Fornece dados de um rastreamento sobre o estado geral de energia do sistema. Tabela Transição de Energia
trace.UseTargetCpuIdleStates() Fornece dados de um rastreamento sobre os estados C da CPU de destino. Tabela Estados Ociosos da CPU (quando o Tipo é Destino)
trace.UseTargetProcessorFrequencyData() Fornece dados de um rastreamento sobre as frequências do processador de destino. Tabela Frequência do Processador (quando o Tipo é Destino)
trace.UseThreads() Fornece dados sobre os threads ativos durante um rastreamento. Tabela Tempos de Vida do Thread
trace.UseTraceStatistics() Fornece estatísticas sobre os eventos em um rastreamento. Configuração do Sistema, Estatísticas de Rastreamento
trace.UseUtcData() Fornece dados de um rastreamento sobre a atividade de telemetria da Microsoft usando o UTC (Cliente de Telemetria Universal). Tabela UTC
trace.UseWindowInFocus() Fornece dados de um rastreamento sobre as alterações na janela de interface do usuário ativa em foco. Tabela Janela em Foco
trace.UseWindowsTracePreprocessorEvents() Fornece eventos WPP (pré-processador de rastreamento de software do Windows) de um rastreamento. Tabela Rastreamento de WPP; Tabela Eventos Genéricos (quando o Tipo de Evento é WPP)
trace.UseWinINetData() Fornece dados de um rastreamento sobre a atividade da Internet por meio do WinINet (Windows Internet). Tabela Detalhes do Download
trace.UseWorkingSetData() Fornece dados de um rastreamento sobre as páginas de memória virtual que estavam no conjunto de trabalho para cada categoria de processo ou kernel. Tabela Instantâneos de Memória Virtual

Consulte também os métodos de extensão em ITraceSource para obter todos os dados de rastreamento disponíveis ou examine o método disponível em "trace." mostrado pelo IntelliSense.

Próximas etapas

Nesta visão geral, você aprendeu a acessar os dados de rastreamento usando o TraceProcessor e as fontes de dados internas que ele pode acessar.

A próxima etapa será aprender a estender o TraceProcessor para acessar dados de rastreamento personalizados.