Partilhar via


Como capturar um rastreamento de eventos USB com o Logman

Este artigo fornece informações sobre como usar a ferramenta Logman para capturar um rastreamento de eventos DE ETW USB. O Logman é uma ferramenta de rastreamento incorporada ao Windows. Você pode usar o Logman para capturar eventos em um arquivo de log de rastreamento de eventos.

Pré-requisitos

Os arquivos de log de rastreamento de eventos podem crescer muito rapidamente, mas um arquivo de log menor é mais fácil de navegar e mais fácil de transmitir. Antes de iniciar um rastreamento, considere executar as seguintes etapas para excluir eventos desnecessários do log para que você possa se concentrar na atividade do dispositivo que deseja examinar:

  • Desconecte todos os dispositivos USB não críticos que não sejam o dispositivo de interesse. Menos dispositivos resultam em rastreamentos menores facilitando a leitura e a análise.
  • Se o sistema tiver um teclado USB ou mouse, insira os comandos de rastreamento usando a Área de Trabalho Remota.
  • Restrinja o início e o fim do rastreamento o máximo possível em torno das operações de interesse.
  • Se você estiver interessado apenas em uma determinada categoria de eventos USB, poderá usar palavras-chave para filtrar os eventos registrados. Para obter mais informações, consulte Comentários.

Os rastreamentos de eventos da pilha do driver USB 3.0 são semelhantes aos rastreamentos de pilha do driver USB 2.0, que foram introduzidos no Windows 7. Os rastreamentos de eventos da pilha do driver USB 2.0 podem ser capturados em um computador Windows 8. A maneira como você captura rastreamentos de eventos de pilhas de driver USB 2.0 e USB 3.0 é semelhante. Você pode capturar eventos da pilha de driver USB 2.0 ou USB 3.0 de forma independente. Quando você conecta um dispositivo USB 2.0 a um controlador de host USB 3.0, obtém rastreamentos de eventos da pilha de driver USB 3.0. Nesse caso, você exibirá novos eventos de pilha de driver USB 3.0 para um dispositivo USB 2.0.

Instruções

Para coletar eventos de rastreamento USB

  1. Abra uma janela de prompt de comando que tenha privilégios administrativos. Para fazer isso, selecione Iniciar, digite cmd na caixa de pesquisa, Selecione e segure (ou clique com o botão direito do mouse) cmd.exe e selecione Executar como administrador.

  2. Na janela do prompt de comando, insira estes comandos para iniciar uma sessão de captura:

    logman create trace -n usbtrace -o %SystemRoot%\Tracing\usbtrace.etl -nb 128 640 -bs 128
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3 (Default,PartialDataBusTrace)
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBPORT
    logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB
    logman update trace -n usbtrace -p Microsoft-Windows-Kernel-IoTrace 0 2
    logman start -n usbtrace
    
    

    Após a conclusão de cada um desses comandos, o Logman será exibido The command completed successfully.

  3. Execute as operações que você deseja capturar. Por exemplo, para capturar eventos para enumeração de dispositivo, você pode conectar uma unidade flash USB que aparece como um "dispositivo desconhecido" em Gerenciador de Dispositivos. Mantenha a janela do prompt de comando aberta.

  4. Interrompa a sessão depois de concluir o cenário. Insira estes comandos para encerrar a sessão de captura:

    Você pode interromper a coleta de eventos de porta e hub USB executando o seguinte comando:

    logman stop -n usbtrace
    logman delete -n usbtrace
    move /Y %SystemRoot%\Tracing\usbtrace_000001.etl %SystemRoot%\Tracing\usbtrace.etl
    
    

A sessão de captura anterior gera um arquivo etl, chamado usbtrace.etl. O arquivo de rastreamento é armazenado em %SystemRoot%\Tracing\usbtrace.etl (C:\Windows\Tracing\usbtrace.etl). Mova o arquivo para outro local ou renomeie-o para evitar substituí-lo quando você capturar a próxima sessão.

O arquivo contém rastreamentos de eventos das pilhas de driver USB 3.0 e USB 2.0. Se você quiser reduzir os rastreamentos de eventos para apenas uma pilha de driver USB, remova a outra pilha de driver da próxima sessão de rastreamento. Você pode fazer isso modificando a sequência de comandos mostrada na etapa 2 para remover as linhas de "atualização do logman" correspondentes à pilha de driver que você deseja remover da sessão de rastreamento.

Comentários

Capturar filtros para eventos de pilha de driver USB 3.0

Observe palavras-chave ETW como Default e PartialDataBusTrace nos comandos de captura do Logman. Essas palavras são palavras-chave ETW que indicam os tipos de eventos que você deseja exibir. Você pode usar palavras-chave ETW para filtrar os eventos que os drivers USB gravam em um log de rastreamento e personalizar quantas informações você deseja exibir sobre eventos capturados da pilha de driver USB 3.0. Os eventos que correspondem a qualquer uma de suas palavras-chave são salvos. Observe que esse método de filtragem é para uso em tempo de captura, não durante a análise.

Você pode filtrar eventos com base em palavras-chave, dependendo de seus requisitos. Aqui estão as palavras-chave para filtrar eventos de pilha de driver USB 3.0:

ETW palavra-chave Descrição
Default Mostra eventos úteis para solução de problemas gerais. Os eventos são semelhantes aos eventos DE ETW USB 2.0, mas não incluem eventos de transferência USB.
StateMachine Mostra as transições do computador de estado interno do driver. Os eventos não estão incluídos no palavra-chave Padrão.
Resumo Mostra eventos de informações do dispositivo no início do rastreamento e captura o estado inicial da árvore USB. As informações do dispositivo Eventos de rundown são importantes para salvar para que o rastreamento contenha detalhes, como os descritores USB e a Descrição do Dispositivo USB, de dispositivos conectados. Esses eventos são incluídos no palavra-chave Padrão. Quando você não usa o palavra-chave Padrão, deve usar a palavra-chave Rundown. Os eventos rundown restantes fornecem informações sobre transições de estado recentes dos computadores de estado interno do driver. Esses eventos são incluídos no palavra-chave StateMachine.
Energia Mostra um subconjunto de eventos Padrão . Mostra eventos de transição de energia do dispositivo.
IRP Mostra um subconjunto de eventos Padrão . Os eventos mostram IRPs do driver cliente e IRPs resultantes de solicitações do modo de usuário. No entanto, as solicitações válidas de transferência USB (URB) não são mostradas com a palavra-chave IRP e exigem HeadersBusTrace, PartialDataBusTrace ou FullDataBusTrace para serem mostradas.
HeadersBusTrace Mostra todos os eventos de transferência USB, mas não salva pacotes de dados.
PartialDataBusTrace Mostra todos os eventos de transferência USB e salva uma carga limitada de dados de barramento.
FullDataBusTrace Mostra todos os eventos de transferência USB e economiza até 4 KB de dados de barramento para transferências em massa, interrupção e controle. Observe que apenas o primeiro buffer de um MDL encadeado é registrado. Os dados do barramento isocrono nunca são registrados (embora a estrutura de solicitação URB_ISOCH_TRANSFER seja salva). Para obter mais informações, consulte Como enviar MDLs encadeados e Como transferir dados para pontos de extremidade isócronos USB.
HWVerifyHost Mostra um subconjunto de eventos Padrão . Os eventos indicam quando ocorre um erro no hardware do controlador de host USB.
HWVerifyHub Mostra um subconjunto de eventos Padrão . Os eventos indicam quando ocorre um erro no hardware do hub USB.
HWVerifyDevice Mostra um subconjunto de eventos Padrão . Os eventos indicam quando ocorre um erro no hardware do dispositivo USB.

Por exemplo, aqui está uma sequência de comandos que iniciam uma sessão para capturar transições de energia do dispositivo USB. Devido à seleção de provedores (a pilha de driver USB 3.0), os eventos são capturados somente para dispositivos conectados downstream de um controlador de host USB 3.0.

logman create trace -n usbtrace -o %SystemRoot%\Tracing\usbtrace.etl -nb 128 640 -bs 128
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBXHCI (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-USB-UCX (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-USB-USBHUB3 (Rundown,Power)
logman update trace -n usbtrace -p Microsoft-Windows-Kernel-IoTrace 0 2
logman start -n usbtrace

Capturar filtros para eventos de energia

Uma palavra-chave ETW útil para dispositivos USB é o sinalizador PowerDiagnostics do driver de porta USB. Quando você usa esse palavra-chave, o driver de porta registra informações do controlador de host e do ponto de extremidade, mas omite todos os eventos que descrevem transferências. Se você não precisar ver os eventos de transferência, poderá usar o powerdiagnostics palavra-chave para reduzir o tamanho de um log de rastreamento em até 85%. Especifique o powerdiagnostics palavra-chave quando você iniciar o rastreamento, conforme mostrado no exemplo a seguir:

Logman start Usbtrace -p Microsoft-Windows-USB-USBPORT PowerDiagnostics -o usbtrace.etl -ets -nb 128 640 -bs 128

Logman update Usbtrace -p Microsoft-Windows-USB-USBHUB –ets

Se o log de rastreamento filtrado tiver muitos eventos de habilitação e desabilitação de agendamento assíncrono do controlador de host, você poderá filtrá-los ao exibir o log usando um filtro Netmon, conforme mostrado no exemplo a seguir:

NOT (Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Host Controller Async Schedule Enable"
OR Description == "USBPort_MicrosoftWindowsUSBUSBPORT:Host Controller Async Schedule Disable")

Para obter mais informações sobre filtros Netmon, consulte "Filtros USB Netmon" em Estudo de Caso: Solução de problemas de um dispositivo USB desconhecido usando ETW e Netmon.

Às vezes, é útil ter os eventos de transferência em seu log de rastreamento, como solicitações de hub e solicitações de dispositivo que resultam em erros como um erro XACT ou uma parada. Você pode primeiro capturar um log sem os eventos de transferência e analisar esse log menor. Em seguida, execute o rastreamento novamente sem filtragem depois de ter uma compreensão geral dos problemas em seu cenário de problema.