Compartilhar via


Como fazer habilitar a depuração sem iniciar uma sessão de rastreamento ETW?

Para depurar problemas sem iniciar uma sessão de rastreamento ETW, adicione uma definição de macro WPP_DEBUG ao código-fonte.

Aqui está um exemplo para o driver de exemplo do WDK Tracedrv.sys:

#define WPP_DEBUG(b) DbgPrint b, DbgPrint("\n")

A maioria dos formatos e argumentos pode ser usada com WPP_DEBUG. No entanto, você não pode usar especificações de formato estendido, como %! HEXDUMP!% com essa macro.

Consulte também Como fazer enviar mensagens de rastreamento para um depurador no modo de usuário?.

Ao usar o Depurador do Kernel

Se você estiver usando o depurador de kernel, defina os valores de nível e sinalizador para a estrutura de controle do WPP.

  1. Localize o endereço da estrutura de controle do WPP da seguinte maneira:

     kd>   x tracedrv!WPP_MAIN_CB    // tracedrv is the WPP instrumented driver
    9fbf3040 tracedrv!WPP_MAIN_CB = union WPP_PROJECT_CONTROL_BLOCK [1]
    kd>dt WPP_TRACE_CONTROL_BLOCK 9fbf3040  
    +0x000 Callback : 0x9fbf127c tracedrv!WppTraceCallback+0
    +0x004 ControlGuid : 0x9fbf206c _GUID {d58c126f-b309-11d1-969e-0000f875a5bc}
    +0x008 Next : (null) 
    +0x010 Logger : 0
    +0x018 RegistryPath : (null) 
    +0x01c FlagsLen : 0x1 ''
    +0x01d Level : 0x0 ''    <--- Set the Level
    +0x01e Reserved : 0
    +0x020 Flags : [1] 0x0  <--- Set the Flag
    
  2. Defina o valor para o nível como 5 e para os sinalizadores 0xf, da seguinte maneira:

    kd>eb 9fbf305d 5    // setting the level value to 5
    
    kd>ed 9fbf3060 0xf    // setting the flag value to 0xf
    
  3. (Windows Vista e versões posteriores do Windows) Habilite a máscara de filtro para receber as mensagens da seguinte maneira:

    kd>ed nt!Kd_DEFAULT_Mask 0xff