8

幸いなことに、私は BSOD を引き起こす多くのアプリケーションを書いたことがありませんが、この画面の情報の有用性について疑問に思っています。コード内のエラーを見つけるのに役立つ有用な情報が含まれていますか? もしそうなら、正確に何が必要ですか?

その後、システムが再起動し、エラー ログやその他の情報がシステムのどこかに書き込まれている可能性があります。それはどこにあり、何が含まれており、コードを改善するためにどのように使用すればよいですか?

以前、PBX システムと対話していたときに定期的に BSOD を取得しましたが、そのドライバーのドキュメントが不足していたため、試行錯誤のコーディングを行う必要がありました。幸いなことに、私は現在別の会社で働いており、私のコードが原因で BSOD が発生することはありません。

4

2 に答える 2

7

クラッシュ ダンプが利用可能であると仮定して、最大 90% の確率で動作する OS クラッシュの原因を見つけるかなり簡単な方法が必要な場合は、次の手順を試してください。

  • Windowsパッケージ用のデバッグ ツールの一部として WinDbg をダウンロードします。Debugging Tools for Windows というコンポーネントのみをインストールする必要があることに注意してください。
  • WinDbg を実行する
  • ファイルメニューから「クラッシュダンプを開く」を選択
  • ダンプ ファイルにタイプがロードされたら、analyze -vEnter キーを押します
  • WinDbg はクラッシュの自動分析を行い、クラッシュ時のシステム状態に関する大量の情報を提供します。通常、どのモジュールに障害があり、どのタイプのエラーがクラッシュを引き起こしたかがわかります。また、役立つ場合もあれば、そうでない場合もあるスタック トレースを取得する必要があります。
  • もう 1 つの便利なコマンドはkb、スタック トレースを出力するコマンドです。そのリストで、 を含む行を探します.sys。これは通常、クラッシュの原因となったドライバーです。

スタック トレースで関数名を取得する場合は、WinDbg でシンボルを構成する必要があることに注意してください。これをする:

  • C:\symbols などのフォルダーを作成します。
  • WinDbg で、[ファイル] -> [シンボル ファイルのパス] を開きます。
  • 追加:SRV*C:\symbols*http://msdl.microsoft.com/download/symbols

これにより、Microsoft のサーバーからシンボル ファイルがキャッシュされます。

自動分析では不十分な場合は、WinDbg が提供するさまざまなコマンドを使用して、クラッシュ時に何が起こっていたかを正確に把握できます。ヘルプ ファイルは、このシナリオを開始するのに適した場所です。

于 2009-08-24T08:23:50.877 に答える
3

一般的に言えば、アプリケーション コード内から OS のクラッシュやバグ チェックを引き起こすことはできません。とはいえ、一般的なヒントなどをお探しの場合は、NTDebugging ブログをお勧めします。ほとんどのものは私の頭の中にあります。

OS がクラッシュすると、現在のフラグなどに応じて、カーネル ダンプ ファイルが書き込まれ、多かれ少なかれ情報が得られます。ダンプ ファイルは、windbg またはその他のデバッガーにロードできます。Windbg には便利な!analyzeコマンドがあります。このコマンドは、ダンプ ファイルを調べて、クラッシュが発生したバケットと考えられる原因に関するヒントを提供します。また、バグ チェックの一般的な原因と、それを解決するためにできることについては、windbg のドキュメントを確認してください。

于 2009-08-24T08:10:39.123 に答える