次の方法で共有


ETW トレース セッションを開始せずにデバッグを有効にする方法

ETW トレース セッションを開始せずに問題をデバッグするには、ソース コードに WPP_DEBUG マクロ定義を追加します。

WDK Tracedrv.sys サンプル ドライバーの例を次に示します。

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

ほとんどの形式と引数は、 WPP_DEBUGで使用できます。 ただし、このマクロでは %!HEXDUMP!% などの拡張形式仕様を使用できません。

ユーザー モード デバッガーにトレース メッセージを送信する方法」も 参照してください。

カーネル デバッガーを使用する場合

カーネル デバッガーを使用している場合は、WPP コントロール構造体のレベルとフラグの値を設定します。

  1. WPP 制御構造のアドレスを次のように見つけます。

     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. 次のように、レベルの値を 5 に設定し、フラグを 0xfに設定します。

    kd>eb 9fbf305d 5    // setting the level value to 5
    
    kd>ed 9fbf3060 0xf    // setting the flag value to 0xf
    
  3. (Windows Vista 以降のバージョンの Windows)フィルター マスクを有効にして、次のようにメッセージを受信します。

    kd>ed nt!Kd_DEFAULT_Mask 0xff