5

最近、作業中のXPボックスで多くのブルースクリーンが発生しています。実際、私はWindows(x86)のデバッグツールをダウンロードして、クラッシュダンプを分析しているほど多くの人がいます。実際、ダンプをミニのみに変更したので、ブルースクリーンが詳細なクラッシュログの記録を終了するのを待つだけで、毎週半営業日でタンクに入れてしまう可能性があります。

ほとんど例外なく、すべてのダンプは、ブルースクリーンの原因が何らかのメモリの誤割り当てまたは誤参照であり、0x%08lxのメモリが0x%08lxを参照しており、%sではないことを示しています。

アイドル状態の好奇心から、私は「0x%08lx」をGoogleに入れましたが、かなりの数のクラッシュダンプにこの奇妙なメッセージが含まれていることがわかりました。0x%08lxは、意味のあるもののプレースホルダーであると思いますか?「メモリは%sにできませんでした」という結論文の一部である「%s」は、変数などが欠落しているように見えます。

このメッセージの出所を知っている人はいますか?それは実際に役立つはずであり、どのように見えるはずですか?

それは私がいつもそれを回避してきた主要なことではありません。非常に多くの人がこれを非常に多くのクラッシュダンプで見る必要があり、誰も「クラッシュダンプがそのメッセージを正しく完了しなかったため、読み取るはずです...」と言うことはありません。

この奇妙なエラーメッセージアーティファクトの目的を誰かが知っているかどうかだけが気になります。

4

2 に答える 2

11

0x%08lxそして%s、ほぼ確実に、C関数sprintfのフォーマット指定子です。しかし、ドライバー開発者は、重要なコードで行ったのと同じようにエラー処理コードでうまくいったように見えます。GUIにこれらの指定子が表示されることは決してないため、意味のある値に置き換える必要があります。

0x%08lx16進数の32ビットポインタ値である「0xE001D4AB」のようなものに変わるはずです。

%s別の文字列(この場合は説明)に置き換える必要があります。何かのようなもの

0xE001D4ABのメモリは0xE005123Fを参照 しており、読み取ることができませんでした。

値を作成したことに注意してください。基本的に、カーネルモードのアクセス違反が発生しました。うまくいけば、ミニダンプで、どのモジュールがそれを引き起こしたかを確認し、それをアンインストール/更新/何でもすることができます。

于 2011-02-11T11:12:12.577 に答える
8

I believe it is just the placeholder for the memory address. 0x is a string prefix that would notify the user that it is an hexadecimal, while %08lx is the actual placeholder for a long int (l) converted to hexadecimal (x) with a padding of 8 zeroes (08).

于 2011-02-11T11:13:16.850 に答える