2011-01-19 54 views
13

デバッグ時にデバッグ情報が表示されないen_windows_7_checked_build_dvd_x86_398742。 私自身のトレース情報(ATLTRACE)さえも見ることができません。 反対に、Windows XP Checkedは魅力のように機能します。 Windows 7でデバッグセッションを開始すると、「Bad QueryIdType:5」というメッセージが表示されます。 カーネルデバッグは、明らかに正しく設定されています。 助けてください...カーネルトレースWindows 7 WinDbg

答えて

13

OK、私は解決策を見つけましたhere

問題:DbgPrintまたはKdPrintメッセージは、Windows Vistaでドライバを実行するとWinDbg(またはKD)に表示されません。

理由は? Vistaは自動的にDbgPrintと友人をDbgPrintExにマップします。ここで、DbgPrintExを使用すると、関数呼び出しのコンポーネント名とレベル、レジストリまたはメモリ内の関連するフィルタマスクを使用してメッセージをフィルタリングし、メッセージをカーネルデバッガに送信する条件を制御できます。

Vistaでは、DbgPrintとKdPrintはコンポーネント「DPFLTR_DEFAULT_ID」とレベル「DPFLTR_INFO_LEVEL」にマップされています。もちろん、Vistaではxxx_INFO_LEVEL出力はデフォルトでは無効になっています。したがって、デフォルトでは、DbgPrint/KdPrintはカーネルデバッガに送られません。

修正方法?二つの選択肢は:

  • キーHKLM\SYSTEM\CurrentControlSet\Session Manager\Debug Print Filter --openデフォルトでDbgPrint/KdPrintメッセージの出力を有効にします。このキーの下に名前を持つ値を作成しますDEFAULT xxx_INFO_LEVEL出力とxxx_ERROR_LEVEL出力を有効にするには、このキーの値をDWORD値8に設定します。または、マスクを0xFに設定して、すべての出力を取得してみてください。これらの変更を有効にするには、再起動する必要があります。

  • 具体的には、コンポーネントフィルタマストをDPFLTRに変更してください。 Vista/LHの初期リリースでは、DWORDのマスク値をKd_DPFLTR_MASK( "ed Kd_DPFLTR_MASK")に指定して、デフォルトのプリントアウトマスクを変更しました。ビルド5308(VistaのFebruary CTP)では、マスク変数が変更されたため、DWORDのマスク値をKd_DEFAULT_MASK( "ed Kd_DEFAULT_MASK")に設定する必要があります。いずれの場合も、8を指定してDPFLTR_INFO_LEVEL出力を有効にします。ドライバ開発ツールを\ドライバーでのデバッグコードを使用して\ドライバーをデバッグするためのツール:DPFLTR_ERROR_LEVEL出力、または0xFの出力のすべてのレベルを取得する

読書とフィルタリングのデバッグメッセージが(パスをたどるためのWDKドキュメントを参照してくださいに\ Debugging Code Overview)DbgPrintEx/KdPrintExの使用方法の詳細については、DbgPrintExのDebugging Tools For Windowsのドキュメント(付録A)を参照してください。

15

私はWindows 7の32ビットで、windbgの中からそれを修正することができました:

ed Kd_DEFAULT_Mask 8 

MSDNの記事によると、あなたはまた、レジストリを使用することができますが、それを有効にするために再起動する必要があります。 8の値を持つDEFAULTと呼ばれるHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filterの下にDWORDキーを作成します。

日マイクロソフトのドキュメントまでは、ここに提供されています:http://msdn.microsoft.com/en-us/library/windows/hardware/ff551519(v=vs.85).aspx

1

DbgPrint/KdPrintメッセージの出力イネーブルの場合、デフォルトではレジストリパスが 「ます。HKEY_LOCAL_MACHINE \ System \ CurrentControlSet \コントロール\セッションマネージャ\デバッグ印刷フィルタ」でありますセッションマネージャはControlの下にありません。デフォルト値normalyは0xfです。これにより、すべてのメッセージが有効になります。あなたは、Visual Studio 2015または2017を取る場合 は情報が https://docs.microsoft.com/de-de/windows-hardware/drivers/devtest/reading-and-filtering-debugging-messages#identifying-the-component-name

に位置している、あなたのニーズに、より良いフィッティングビットマスクを設定するには、標準構成では、デフォルトでは、このフラグを設定しません。サンプルを使って作業を開始するときには、デバッグターゲットでこれを余分に設定することを忘れないでください。

これはWindbgを使用している私のWindows 10環境で私を助けました。

エコーの例で説明したように第二の問題は、デバッグ・ターゲットに必要なドライバファイルを転送する「構築されたドライバファイルを見つけて7」とDEVCONでそれらをロードする弾丸でのWindows 10上で https://docs.microsoft.com/en-us/windows-hardware/drivers/debugger/debug-universal-drivers---step-by-step-lab--echo-kernel-mode-#install

をDEVCONを使用していました。 Windows 10を使用する場合は、catalog-Fileもコピーする必要があります。そうしないと、devcon.exeは説明どおりに失敗します。 原因として、テスト証明書もインストールする必要があります。これは、通常、Visual Studio 2015/2017でデバッグ環境を準備するときに行われます。 certmgrでもう一度チェックしてください。