さまざまなドライバやサブシステムで詳細なデバッグ トレースを有効にする方法

文書翻訳 文書翻訳
文書番号: 314743 - 対象製品
この記事は、以前は次の ID で公開されていました: JP314743
すべて展開する | すべて折りたたむ

目次

概要

デバイス ドライバをデバッグする場合、ドライバとその関連サブシステムから詳細なデバッグ トレースを取得する必要があります。

マイクロソフトが提供する大部分のドライバとサブシステムでは、グローバル変数とあらかじめ定義された一連の変数を使用して、デバッガに送られるデバッグ トレース情報の詳細レベルを制御しています。

この資料では、次の項目について説明します。
  • カーネル デバッガとレジストリの値を使用して、デバッグ トレース レベルを有効にし、制御する方法
  • 特定の種類のドライバに対し、対応するデバッガ拡張機能を使用して、デバッグ トレースを有効にし、制御する方法
  • Windows 2000 と Windows XP でのデバッグ トレースを有効にする方法の違い

詳細

重要 : この資料には、開発およびテストを目的とした .chk ファイルの実行に関する情報が記載されています。Microsoft Product Support Services (PSS) は、問題を特定するために PSS の指示で .chk ファイルをインストールした場合を除き、.chk ファイルがインストールされている運用システムをサポートしません。運用システムに .chk ファイルをインストールする前に、必ずシステムをバックアップし、問題が発生した場合に、置き換えたファイルを復元する方法を確認してください。

.chk ファイルの関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
103659 ハードウェアの検査中にセットアップが応答を停止する (Ntdetect.com の使用方法)
320040 Windows 2000 で Ntdetect.chk を使用してハードウェアの問題を特定する方法
システムのバックアップと復元の方法については、Windows 2000 ヘルプとサポートを参照してください。 Ntbackup の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
240363 システム状態のバックアップと復元の方法
また、バックアップ製品の使用方法に関する情報については、バックアップ製品の提供元に問い合わせてください。

: 次のデバッグ情報は、随時変更される場合があります。また、このデバッグ情報はドライバのデバッグのみを目的としており、ドライバの開発者以外には不要である可能性があります。

ビデオ ミニポートのデバッグ

ビデオ ミニポートのデバッグを行う際は、次のことに注意してください。
  • チェック ビルド ビデオ ポートとミニポート ドライバが必要です。
  • デバッガ拡張機能は使用されません。
  • デバッグ トレースを有効にするために、グローバル変数が設定されます。
  • 変数名は、Windows 2000 と Windows XP では異なります。
  • Windows 2000 では、次の手順を実行して、レジストリまたはデバッガからデバッグ トレースを有効にできます。
    • レジストリの VideoDebugLevel の値 (0 〜 3) を次のように設定します。

      HKEY_LOCAL_MACHINE\SYSTEM\CCS\Services\DriverName\DeviceN VideoDebugLevel:REG_DWORD: 2
    • または、デバッガから次のように設定します。
      ed videoprt!VideoDebugLevel 2
  • Windows XP ベースのコンピュータのビデオ ポートでは、新しい DbgPrintEx 関数を使用します (詳細については、この資料の「注意事項」を参照してください)。

    ビデオ ドライバ用に定義されている変数は、次のとおりです。
    Kd_IHVVIDEO_Mask
    Kd_VIDEO_Mask
    Kd_VIDEOPRT_Mask
    マスクを設定するには、次の手順を実行します。
    • レジストリに必要なマスクを追加します。

      例 :
      HKEY_LOCAL_MACHINE\SYSTEM\CCS\Control\Session?Manager\Debug?Print?Filter "IHVVIDEO"=DWORD: 0xffffffff
    • または、デバッガから次のように設定します。
      ed Kd_IHVVIDEO_Mask 0xffffffff

1394 のデバッグ

1394 のデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド 1394 モジュールが必要です。
  • Windows 2000 および Windows XP ベースのシステムで、デバッガから対応するグローバル変数を設定します。次に例を示します。
    ed ohci1394!ohcidebuglevel 6
    元に戻す全体を表示する
    モジュール名 デバッグ シンボル 範囲
    OHCI1394.SYS ohcidebuglevel 1 〜 6
    SBP2PORT.SYS sbp2debuglevel 1 〜 4
    1394BUS.SYS busdebuglevel 1 〜 5
    関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    259855 [HOWTO] IEEE 1394 ドライバのデバッグの出力を有効にする方法

USB のデバッグ

USB (Universal Serial Bus) のデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド USB モジュールが必要です。
  • Windows 2000 ベースのシステムでは、デバッガから対応するグローバル変数を設定する必要があります。次に例を示します。
    ed USBD!USBD_Debug_Trace_Level 2
    元に戻す全体を表示する
    ??モジュール名?? ??デバッグ シンボル?? 範囲
    UHCD.SYS UHCD_Debug_Trace_Level 0 〜 2
    OPENHCI.SYS OHCI_Debug_Trace_Level 0 〜 2
    USBHUB.SYS USBH_Debug_Trace_Level 0 〜 3
    USBD.SYS USBD_Debug_Trace_Level 0 〜 3
  • Windows XP ベースのシステムでは、次のパラメータを使用します。
    元に戻す全体を表示する
    ??モジュール名?? ??デバッグ シンボル?? 範囲
    USBPORT.SYS USBPORT_Debug_Trace_Level 0 〜 4
    USBCCGP.SYS DbgVerbose 0 または 1
    USBHUB.SYS USBH_Debug_Trace_Level 0 〜 3
    USBD.SYS USBD_Debug_Trace_Level 0 〜 3
    USBPORT.SYS USBPORT_CatcTrapEnable 0 〜 1
  • すべての USB ミニポート ドライバのデバッグ出力に USBPORT が使用されます。

PCI のデバッグ

PCI (Peripheral Component Interconnect) のデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド PCI.SYS モジュールが必要です。
  • Windows 2000 および Windows XP ベースのシステムで、デバッガから対応するグローバル変数を設定します。次に例を示します (0x3 が最も詳細です)。
    ed PCI!PciDebug 0x3
    元に戻す全体を表示する
    ??モジュール名?? ??デバッグ シンボル?? 範囲
    PCI.SYS ?PciDebug? ?0 〜 3?

PCMCIA のデバッグ

PCMCIA のデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド pcmcia モジュールが必要です。
  • Windows 2000 および Windows XP ベースのシステムで、デバッガから対応するグローバル変数を設定します。次に例を示します。
    ed PCMCIA!PcmciaDebugMask 0xFFFFFFFF
    値の定義は以下のとおりです。
    #define PCMCIA_DEBUG_ALL       0xFFFFFFFF
    #define PCMCIA_DEBUG_TUPLES    0x00000001
    #define PCMCIA_DEBUG_ENABLE    0x00000002
    #define PCMCIA_DEBUG_PARSE     0x00000004
    #define PCMCIA_DUMP_CONFIG     0x00000008
    #define PCMCIA_DEBUG_INFO      0x00000010
    #define PCMCIA_DEBUG_IOCTL     0x00000020
    #define PCMCIA_DEBUG_DPC       0x00000040
    #define PCMCIA_DEBUG_ISR       0x00000080
    #define PCMCIA_DEBUG_CANCEL    0x00000100
    #define PCMCIA_DUMP_SOCKET     0x00000200
    #define PCMCIA_READ_TUPLE      0x00000400
    #define PCMCIA_SEARCH_PCI      0x00000800
    #define PCMCIA_DEBUG_FAIL      0x00008000
    #define PCMCIA_PCCARD_READY    0x00010000
    #define PCMCIA_DEBUG_DETECT    0x00020000
    #define PCMCIA_COUNTERS        0x00040000
    #define PCMCIA_DEBUG_OVERRIDES 0x00080000
    #define PCMCIA_DEBUG_IRQMASK   0x00100000
    					
    元に戻す全体を表示する
    ??モジュール名?? ??デバッグ シンボル?? 範囲
    PCMCIA.SYS ?PcmciaDebugMask? ?0-FFFFFFFF?

NDIS のデバッグ

NDIS (Network Driver Interface Specification) のデバッグを行う際は、次のことに注意してください。

ストレージ ドライバのデバッグ

ストレージ ドライバのデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド ストレージ モジュールが必要です。 関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
    296225 SCSIPORT のデバッグ ログを有効にする方法

プリンタ ドライバのデバッグ

プリンタ ドライバのデバッグを行う際は、次のことに注意してください。

ユーザー モード

  • チェック ビルド システムまたはチェック ビルド プリンタ ドライバ コンポーネント (unidrv または pscript) が必要です。
  • ユーザー インターフェイス (UI) モジュールをデバッグするか、レンダリング モジュールをデバッグするかに応じて、印刷アプリケーションまたはスプーラ プロセス (spoolsv.exe) にアタッチします。
  • Unidrv をデバッグする場合は、次の設定を使用します。
    ed unidrv!giDebugLevel 1

カーネル モード

  • gflags コマンドを実行して、spoolsv.exe の次のフラグを有効にします。
    • Windows 2000 の場合 : "Place Heap Allocation at end of pages"
    • Windows XP の場合 : "enable page heap"
  • スプーラを再起動します (net stop/start spooler)。
  • Win32K.sys に対して verifier.exe を実行して、プリンタ ドライバをデバッグします。

オーディオ ドライバのデバッグ

オーディオ ドライバのデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド オーディオ モジュールが必要です。
  • Windows 2000 および Windows XP ベースのシステムで、デバッガから対応するグローバル変数を設定します。次に例を示します。
    ed USBAUDIO!USBAudioDebugLevel 3
    元に戻す全体を表示する
    ???モジュール名??? ????デバッグ シンボル???? ??範囲??
    USBAUDIO.SYS USBAudioDebugLevel 0 〜 3
    SYSAUDIO.SYS SYSAUDIOTraceLevel 0 〜 100

HID ドライバのデバッグ

HID ドライバのデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド HID モジュールが必要です。
  • Windows 2000 および Windows XP ベースのシステムで、デバッガから対応するグローバル変数を設定します。次に例を示します。
    ed HIDCLASS!dbgverbose 1
    元に戻す全体を表示する
    ???モジュール名??? ????デバッグ シンボル???? ??範囲??
    HIDUSB.SYS HIDUSB_DebugLevel 0 〜 1
    HIDCLASS.SYS dbgverbose 0 〜 1

シリアル ドライバのデバッグ

シリアル ドライバのデバッグを行う際は、次のことに注意してください。
  • チェック ビルド システムまたはチェック ビルド シリアル モジュールが必要です。
  • Serial.sys (Windows 2000 および Windows XP ベースのシステムの両方)
    • レジストリの DebugLevel の値を次のように設定します。
      HKLM\System\CCS\Services\Serial “DebugLevel”= REG_DWORD:0xFFFFFFFF
      または、デバッガから次のように設定します。
      ed Serial!SerialDebugLevel (0x00000000 - 0xFFFFFFFF)
    • マスク値は次のディレクトリで定義されています。
      %DDKROOT%\src\kernel\serial\serial.h
  • Serenum.sys (Windows 2000 および Windows XP ベースのシステムの両方)
    • レジストリの DebugLevel の値を次のように設定します。
      HKEY_LOCAL_MACHINE\System\CCS\Services\Serenum "DebugLevel"= REG_DWORD:1FF
    • マスク値は次のディレクトリで定義されています。
      %DDKROOT%\src\kernel\serenum\serenum.h

モデム ドライバのデバッグ

Windows 2000 および Windows XP ベースのシステムで unimodem の完全な詳細デバッグを有効にするには、チェック ビルドを用意し、次の手順を実行する必要があります。
  1. Mdminst.dll と Unimdm.tsp を除くすべてのファイルについて、次のレジストリ キーを追加します。
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Unimodem "DebugFlags"=dword:0000003f
    • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon "SFCDisable"=dword:00000001
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Modem "DebugFlags"=dword:0000003f
    • HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Modemcsa "DebugFlags"=dword:0000003f
  2. Mdminst.dll については、Unimdm.ini を %windir% にコピーします。Unimdm.ini ファイルの例を次に示します。
    [ModemUI]
    ; DumpFlags:
    ;    00000001   DCB
    ;    00000002   MODEMSETTINGS
    ;    00000004   DEVCAPS
    DumpFlags=0x0000000f
    
    ; TraceFlags:
    ;    00000001   Warnings
    ;    00000002   Errors
    ;    00000004   General 
    ;    00000008   Function trace
    TraceFlags=0x0000000f
    
    ; BreakFlags:
    ;    00000001   Break on validate
    ;    00000040   Break on process attach
    ;    00000100   Break on API enter
    BreakFlags=0x00000000
    
    ;; --------------------------------------------------------------------
    
    [Modem]
    ; DumpFlags:
    DumpFlags=0x0000000f
    
    ; TraceFlags:
    ;    00000001   Warnings
    ;    00000002   Errors
    ;    00000004   General 
    ;    00000008   Function trace
    ;    00010000   Detection queries
    ;    00020000   Class installer trace
    TraceFlags=0x0003000f
    
    ; BreakFlags:
    ;    00000001   Break on validate
    ;    00000040   Break on process attach
    ;    00000100   Break on API enter
    BreakFlags=0x00000000
    
    ;; --------------------------------------------------------------------
    
    [SerialUI]
    ; DumpFlags:
    ;    00000001   DCB
    DumpFlags=0x00000000
    
    ; TraceFlags:
    ;    00000001   Warnings
    ;    00000002   Errors
    ;    00000004   General 
    ;    00000008   Function trace
    TraceFlags=0x00000000
    
    ; BreakFlags:
    ;    00000001   Break on validate
    ;    00000040   Break on process attach
    ;    00000100   Break on API enter
    BreakFlags=0x00000000
    
    ;; --------------------------------------------------------------------
    
    [Unimdm]
    ; DumpFlags:
    DumpFlags=0x0000000f
    
    ; TraceFlags:
    ;    00000001   Warnings
    ;    00000002   Errors
    ;    00000004   General 
    ;    00000008   Function trace
    ;    00010000   dwDeviceID related
    ;    00020000   hdLine related
    ;    00040000   hdCall related
    ;    00080000   pLineDev related
    ;    00100000   pModemInfo related
    TraceFlags=0x001f000f
    
    ; BreakFlags:
    ;    00000001   Break on validate
    ;    00000040   Break on process attach
    ;    00000080   Break on process detach
    ;    00000100   Break on API enter
    BreakFlags=0x00000000
    					
  3. Unimdm.tsp のデバッグを行うために、次のレジストリ キーを追加します。
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4D36E96D-E325-11CE-BFC1-08002BE10318}\device instance\Logging

デバイス インストールのデバッグ

Windows XP 以降のバージョンで、カーネル モードとユーザー モードの PNP マネージャから詳細なトレースを取得するには、チェック ビルドを用意し、次のコードを実行します。
ed NT!Kd_NTOSPNP_Mask 0xFFFFFFFF ed NT!Kd_PNPMGR_Mask 0xFFFFFFFF
Windows 2000 では、カーネル デバッガで、次のようにグローバル変数 PnpEnumDebugLevel を 1 または 2 に設定できます。
ed nt!PnpEnumDebugLevel 2

注意事項

Windows XP ベースのシステムのドライバとサブシステムの中には、次の新しい DbgPrintEx 関数を使用しているものがあります。
ULONG DbgPrintEx(IN ULONG ComponentID,
                 IN ULONG Level, IN PCHAR Format, . . . .
                 [arguments]);
				
マイクロソフトでは、約 95 個の異なるコンポーネント ID を定義しています (詳細については、Ntddk.h ファイルの DPFLTR_TYPE を参照してください)。コンポーネント フィルタ ID ごとに、次のようなグローバル マスク変数があります。
NT! Kd_IHVVIDEO_Mask、NT!Kd_IHVAUDIO_Mask
マスクの値は、レジストリから次のように設定できます。
HKEY_LOCAL_MACHINE\SYSTEM\CCS\Control\Session?Manager\Debug?Print?Filter

"IHV_AUDIO"=REG_DWORD:0xFFFFFFFF

または、デバッガから次のように設定できます。
ed NT!Kd_IHVAUDIO_Mask 0xffffffff
デバッグ出力は、グローバル マスク (Kd_Win2000_Mask) とコンポーネント レベルのマスクに基づいてフィルタ処理されます。出力のフィルタ処理でマスクおよびレベル値がどのように使用されるかについては、Windbg のヘルプ ファイルに記載されています。

デバッグ トレースを有効にするには、次のコードを使用して、Ntddk.h ファイルまたはデバッガからコンポーネント ID を調べます。
x NT!Kd_*_Mask
				
次に、そのコンポーネント ID について、値を詳細出力の最大値 (0xffffffff) に設定します。現在、この新しい関数を使用できるドライバ (この資料の「詳細」に記載されているドライバ) はごくわずかです。

関連情報

なお、この資料は英語版の翻訳であり、日本語環境での確認は行っておりません。

プロパティ

文書番号: 314743 - 最終更新日: 2005年11月21日 - リビジョン: 5.1
この資料は以下の製品について記述したものです。
  • Microsoft Windows XP Driver Development Kit (DDK)
  • Microsoft Win32 Device Driver Kit for Windows 2000
  • Microsoft Windows 2000 Professional
  • Microsoft Windows 2000 Server
  • Microsoft Windows 2000 Datacenter Server
  • Microsoft Windows 2000 Advanced Server
  • Microsoft Windows XP Home Edition
  • Microsoft Windows XP Professional
キーワード:?
kbhowto kbinfo kbbug kbkmode kbwdm kbplugplay kbinput kbndis kbfile kbdebug kbserial kbusb kbdisplay KB314743
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com