Partilhar via


Aceder a dados de rastreio

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

Microsoft.Windows.EventTracing.Processing.All

Este pacote permite que você acesse dados em um arquivo de rastreamento. Se ainda não tiveres um ficheiro de rastreamento, podes usar o Gravador de Desempenho do Windows para criar um.

O aplicativo de console de exemplo a seguir 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);
            }
        }
    }
}

Usando o TraceProcessor

Para processar um traço, chame TraceProcessor.Create. A interface principal é ITraceProcessor, e usar essa interface envolve o seguinte padrão:

  1. Primeiro, indique ao processador quais dados deseja utilizar a partir de um traço
  2. Em segundo lugar, processe o rastreio; e
  3. Por fim, acesse os resultados.

Informar ao processador que tipos de dados você deseja antecipadamente 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 apenas faz 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 exes como 64 bits.

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

    O processamento de rastreamentos pode exigir muita memória, especialmente com rastreamentos maiores, e recomendamos alterar a configuração da plataforma para x64 (ou desmarcar "Preferir 32 bits") em executáveis que utilizam o TraceProcessor. Para alterar essas configurações, consulte a guia Construir em Propriedades do projeto. Para alterar essas definições para todas as configurações, certifique-se de que a lista suspensa de Configuração esteja definida como Todas as Configurações, em vez de apenas a configuração atual por padrão.

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

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

Fontes de dados incorporadas

Um arquivo .etl pode capturar muitos tipos de dados em um rastreamento. Observe que quais dados estão em um arquivo .etl dependem de quais provedores foram habilitados quando o rastreamento foi capturado. A lista a seguir mostra os tipos de dados de rastreamento disponíveis no TraceProcessor:

Código Descrição Itens WPA relacionados
traço. UseClassicEvents() Fornece eventos ETW clássicos de um rastreio, que não incluem informação de esquema. Tabela de Eventos Genéricos (quando Tipo de Evento é Clássico ou WPP)
traço. UseConnectedStandbyData() Fornece dados de um rastreamento sobre o sistema que entra e sai do modo de espera conectado. Tabela de resumo CS
traço. UseCpuIdleStates() Fornece dados de um rastreamento sobre os estados C da CPU. Tabela de estados ociosos da CPU (quando Type é real)
traço. UseCpuSamplingData() Fornece dados de um rastreamento sobre o uso da CPU com base na amostragem periódica do ponteiro de instruções. Tabela de Utilização da CPU (Amostra)
traço. UseCpuSchedulingData() Fornece dados de um rastreamento sobre o agendamento de threads da CPU, incluindo opções de contexto e eventos de thread prontos. Tabela de Utilização da CPU (Precisa)
traço. UseDevicePowerData() Fornece dados de um rastreio sobre os estados D do dispositivo. Tabela de estados do dispositivo (DState)
traço. UseDirectXData() Fornece dados de um rastreamento sobre a atividade do DirectX. Tabela de utilização da GPU
traceUseDiskIOData() Fornece dados de um rastreamento sobre a atividade de E/S do disco. Tabela de Utilização do Disco
traço. UseEnergyEstimationData() Fornece dados de um rastreamento sobre o uso estimado de energia por processo do Energy Estimation Engine. Tabela de Resumo do Motor de Estimativa de Energia (por Processo)
traço. UseEnergyMeterData() Fornece dados de um rastreio sobre o consumo de energia medido a partir da Interface do Contador de Energia (EMI). Tabela do Motor de Estimativa de Energia (por Emi)
seguirá.UseFileIOData() Fornece dados de um rastreamento sobre a atividade de Entrada/Saída de arquivo. Tabela de E/S de ficheiro
traço. UseGenericEvents() Fornece eventos manifestados e TraceLogging a partir de um rastreamento. Tabela de Eventos Genéricos (quando o Tipo de Evento é "Manifested" ou "TraceLogging")
traço. UseHandles() Fornece dados parciais de um rastreamento sobre identificadores ativos do kernel. Manuseamento de tabela
traço. UseHardFaults() Fornece dados de um rastreamento sobre falhas de página física. Tabela de Falhas Críticas
traço. UseHeapSnapshots() Fornece dados de um rastreamento sobre o uso de heap de processo. Tabela de instantâneo de pilha
traço. UseHypercalls() Fornece dados sobre Hyper-V hiperchamadas que ocorreram durante um rastreamento.
traço. UseImageSections() Fornece dados de um rastreamento sobre as seções de uma imagem. Coluna Nome da seção da tabela Uso da CPU (Amostrado)
traço. UseInterruptHandlingData() Fornece dados de um rastreamento sobre a atividade da Rotina de Serviço de Interrupção (ISR) e da Chamada de Procedimento Diferido (DPC). Tabela DPC/ISR
trace.UsarMarcas() Disponibiliza as marcas (carimbos de data/hora rotulados) de um rastreamento. Tabela de marcas
traço. UseMemoryUtilizationData() Fornece dados de um rastreamento sobre a utilização total da memória do sistema. Tabela de utilização de memória
traço. UseMetadata() Fornece metadados de rastreamento disponíveis sem processamento adicional. Configuração do Sistema, Rastreamentos e Geral
traço. UsePlatformIdleStates() Fornece dados de um rastreamento sobre os estados ociosos de plataforma de destino e reais de um sistema. Tabela de Estado Inativo da Plataforma
traço. UsePoolAllocations() Fornece dados de um rastreamento sobre o uso de memória do pool do kernel. Tabela de Resumo do Conjunto
traço. UsePowerConfigurationData() Fornece dados de um rastreamento sobre a configuração de energia do sistema. Configuração do sistema, configurações de energia
traço. UsePowerDependencyCoordinatorData() Fornece dados de um rastreamento sobre as fases do coordenador de dependência de potência ativa. Tabela de resumo da fase de notificação
traço. UseProcesses() Fornece dados sobre processos ativos durante um rastreamento, bem como suas imagens e PDBs. Tabela de processos; Tabela de imagens; Hub de símbolos
traço. UseProcessorCounters() Fornece dados de um rastreamento sobre os valores do contador de desempenho do processador no Processor Counter Monitor (PCM).
traço. UseProcessorFrequencyData() Fornece dados de um rastreamento sobre a frequência em que os processadores foram executados. Tabela de frequência do processador (quando o tipo é real)
traço. UseProcessorProfileData() Fornece dados de um rastreamento sobre o perfil de energia do processador ativo. Tabela de perfis do processador
traço. UseProcessorParkingData() Fornece dados de um rastreamento sobre quais processadores foram estacionados ou não estacionados. Tabela de estado de estacionamento do processador
traço. UseProcessorParkingLimits() Fornece dados de um rastreamento sobre o número máximo permitido de processadores não estacionados. Tabela de Estados de Limite de Estacionamento dos Núcleos
traço. UseProcessorQualityOfServiceData() Fornece dados de um rastreamento sobre a qualidade do nível de serviço para cada processador. Tabela de classes Qos do processador
traço. UseProcessorThrottlingData() Fornece dados de um rastreamento sobre a limitação de frequência máxima do processador. Tabela de restrições do processador
traço. UseReadyBootData() Fornece dados de um rastreamento sobre a atividade de pré-busca de inicialização do Ready Boot. Tabela Ready Boot Events
traço. UseReferenceSetData() Fornece dados de um rastreamento sobre páginas de memória virtual usadas por cada processo. Tabela do conjunto de referência
traço. UseRegionsOfInterest() Fornece regiões nomeadas de intervalos de interesse a partir de um rastreamento, conforme especificado em um arquivo de configuração xml. Tabela de Regiões de Interesse
traço. UseRegistryData() Fornece dados sobre a atividade do Registro durante um rastreamento. Tabela de registo
rastrear.UseResidentSetData() Fornece dados de um registo sobre as páginas de memória virtual que foram residentes na memória física para cada processo. Mesa fixa residente
traço. UseRundownData() Fornece dados de um rastreio sobre os intervalos durante os quais ocorreu a recolha de dados do resumo de rastreio. Regiões sombreadas na linha do tempo do gráfico
Trace.UseScheduledTasks() Fornece dados sobre tarefas agendadas que foram executadas durante um rastreamento. Tabela Tarefas Agendadas
traço. UseServices() Fornece dados sobre serviços que estavam ativos ou tiveram seu estado capturado durante um rastreamento. Tabela de serviços; Configuração do Sistema, Serviços
traço. UseStacks() Fornece dados sobre pilhas gravadas durante um rastreamento.
UseStackEvents() Fornece dados sobre eventos associados a pilhas gravadas durante um rastreamento. Tabela de pilhas
traço. UseStackTags() Fornece um mapeador que agrupa pilhas de um rastreamento em tags de pilha, conforme especificado em um arquivo de configuração XML. Colunas como Stack Tag e Stack (Frame Tags)
traço. UseSymbols() Fornece a capacidade de carregar símbolos para um rastreamento. configurar caminhos de símbolos; Carregar símbolos
traço. UseSyscalls() Fornece dados sobre chamadas de sistema que ocorreram durante um rastreamento. Tabela Syscalls
traço. UseSystemMetadata() Fornece metadados gerais do sistema inteiro a partir de um rastreamento. Configuração do Sistema
traço. UseSystemPowerSourceData() Fornece dados de um rastreamento sobre a fonte de alimentação ativa do sistema (AC vs DC). Tabela da fonte de alimentação do sistema
traço. UseSystemSleepData() Fornece dados de um rastreamento sobre o estado geral de energia do sistema. Tabela de transição de energia
traço. UseTargetCpuIdleStates() Fornece dados de um rastreamento sobre os estados C da CPU de destino. Tabela de Estados Inativos da CPU (quando o Tipo é Alvo)
traço. UseTargetProcessorFrequencyData() Fornece dados de um rastreamento sobre as freqüências do processador de destino. Tabela de frequência do processador (quando o tipo é alvo)
traço. UseThreads() Fornece dados sobre threads ativos durante um rastreamento. Tabela Thread Lifetimes
rastrear. UsarEstatísticasDeRastreamento() Fornece estatísticas sobre os eventos em um rastreio. Configuração do Sistema, Estatísticas de Rastreio
traço. UseUtcData() Fornece dados de um rastreamento sobre a atividade de telemetria da Microsoft usando o Universal Telemetry Client (UTC). Tabela UTC
traço. UseWindowInFocus() Fornece dados de uma monitorização sobre alterações na janela ativa da interface de utilizador em foco. Tabela de Janela em Foco
traço. UseWindowsTracePreprocessorEvents() Fornece eventos do pré-processador de rastreamento de software (WPP) do Windows a partir de um traço. Tabela WPP Trace; Tabela de Eventos Genéricos (quando Tipo de Evento é WPP)
traço. UseWinINetData() Fornece dados de um rastreamento sobre a atividade na Internet via Windows Internet (WinINet). Tabela de detalhes para download
traço. UseWorkingSetData() Fornece dados de uma análise sobre as páginas de memória virtual que estavam incluídas no conjunto de trabalho para cada processo ou categoria do núcleo. Tabela de instantâneos de memória virtual

Consulte igualmente os métodos de extensão de ITraceSource para todos os dados de rastreamento disponíveis, ou examine o método disponível no "trace" conforme mostrado pelo IntelliSense.

Próximas Etapas

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

A próxima etapa é aprender como estender TraceProcessor para acessar dados de rastreamento personalizados.