2009-07-27 6 views
1

私はBSoDを直接回避し、カラフルなドットとストライプがほとんどなく、Windows Vistaの画面を黒に変えるドライバを持っています。私は後でシステム上でメモリダンプを見つけています.DbgViewはすばらしくスタックトレースを表示しています(スタックが歪んでいて、一部の部分が間違っている可能性があります)。残念なことに、スタック内のコマンドは、明らかに全体を分解するコードの部分には見えません。メモリダンプのDbgPrint?

外部デバッガでデバッグメッセージを読み取るために、メモリダンプまたはシリアルポートからデバッグメッセージを受け取る方法を知っている人はいますか?いいえ、ありがとうございます。デバッガが接続されていると私のテストシステムが停止しますが、リモートで接続されたカーネルデバッグの方法とその理由を十分に把握できていないかもしれません。

私のコードが失敗する点を知りたいのですが、コードを介して私にはうんざりして少し無益になっていると私はヒントが必要な場合があります。

答えて

3

説明MSDNからデバッグセッションを設定する方法について説明します。

セットアップ手順は次のとおりです。

  1. セットアップ2のPC、あなたの開発環境やデバッグターゲットである第二と第一。 (Vista + Vista64が私にとって最適)
  2. Firewireケーブルまたはヌルモデムケーブルを使用してデバッガ接続をセットアップします。 (Null-Modemはほとんど常に動作しますが、Firewireは性能面では優れていますが、USBは高価で、私のためにはすぐに使えませんでした...)
  3. 'debug'モードで起動するようにターゲットコンピュータを設定しますMSDN
  4. WinDbgを実行し、カーネル接続を待機している場合は、ターゲットコンピュータをデバッグモードでブートします。
  5. 起動時に、WinDbgはターゲットシステムに関するメッセージを出力します。ここではDbgPrintメッセージなどが表示されます(XPではなくVistaではすべてのDbgPrintが無効になっています)。link
  6. ブレークポイントを定義することによって、WinDbgのモジュールでブレークポイントを設定できます。

PS:bcdeditがデバッグモードの設定に失敗することがあります。私は理由を知りません。しかし、あなたはそれにデバッグパラメータを伝えなければならない特定の順序があります。異なる組み合わせを試してみると、不思議に思えます...。

プロセスに侵入したときにWinDbgでコマンドを使用できます。面白いもののカップル:すべてのモジュールが現在ロードされて

  • LMディスプレイ
  • のLMメートルパターン表示し、検索条件を満足するすべてのモジュール(例えば、 "LMメートルkernel32の*"
  • Xモジュール名! function_name_patternは、モジュール内のシンボルを一覧表示します(例: "kernel32!Cre​​ate *")
  • blは、現在設定されているブレークポイントをすべてリストします
  • bp module_name!function_nameは、指定された関数の先頭にブレークポイントを設定します。
  • BC *は、すべてのブレークポイントを削除し、 "BP"
  • .reload/uのx.sysのヘルプを表示する
  • .hhのBPはx.sysモジュールのデバッグ設定をリロードします。 (これは、プロジェクトを再構築し、 'could not create x.pdb ...'というメッセージが表示されたときに役立ちます)。

はVistaで、すべてのDbgPrint出力を有効にする:私の希望を維持するための

enable_dbg_print_vista.reg

Windows Registry Editor Version 5.00 

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Debug Print Filter] 
"DEFAULT"=dword:0000000f 
+0

感謝を。私の主な問題は、「私は十分に」押していないということでした。したがって、私のテストシステムは、デバッグシステムで空のデバッガウィンドウで固定されているように見えました。ちょっと役に立たないと思った。 (しかし、コマンドのリストは非常に役立ちます。)バックトラックを取得するにはk、kb、kp、kd、逆順を取得するにはu、uf、...を組み合わせてください。 –

+0

また、私のDbgPrintがカーネルデバッガに表示されていないため、テスト済みのマシンでDbgViewを実行する必要があります。残念ながら、Dbgviewが動作しているときに、セットアップ全体がフリーズすることがあります。私はおそらく、ホスト上のいくつかのフラグをオンにする必要があります.... –

+0

これは、フォーマットの権利を得るための答えに設定を追加しました。 – Christopher

関連する問題