Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
- Primeiro, indique ao processador quais dados deseja utilizar a partir de um traço
- Em segundo lugar, processe o rastreio; e
- 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.
Configurações recomendadas do projeto
Há algumas configurações de projeto que recomendamos usar com o TraceProcessor:
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.
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.
Windows developer