クラッシュダンプ解析の初めの一歩などをつらつらと。
といっても私は BSOD になった時にどのモジュールが起因したのかな~ということしか見れないので、これ以上進めませんが…。
なお、メモリダンプを解析する に書かれていることと内容は同じです。
■Debugging Tools for Windows のインストール
クラッシュダンプを解析するためには Debugging Tools for Windows をインストールする必要があります。
インストーラーはこちらからダウンロードできます。
Windows 用デバッグ ツールのダウンロードとインストール
Debugging Tools for Windows のみをインストールすればよいので Debugging Tools for Windows をスタンドアロン コンポーネントとしてインストールする からインストーラーを入手します。
インターネットから必要となるモジュールをダウンロードしてきますので、ダウンロードした sdksetup.exe を実行する端末はインターネットに接続した環境を用意しておきます。
複数の端末にインストールする可能性がある場合は [Download the ~] でフォルダーを指定して配布できるようにしておくとよいかと。今回はこちらを選択しています。
必要になるのは Debugging Tools for Windows だけですのでこれだけをダウンロードするようにしています。
ダウンロードが完了したらダウンロード先に指定したディレクトリの sdksetup.exe を実行して、Debugging Tools for Windwos をインストールします。
■シンボルファイルのパス設定
WinDbg でダンプを解析する際に使用するシンボルファイルを MS のシンボルサーバーから入手するためのパスを設定します。
Use the Microsoft Symbol Server to obtain debug symbol files
環境変数に設定する方法もありますが、私は WinDbg で設定していますね。
WinDbg を起動して、[File] の [Synbol File Path] を選択します。
# Workspace の保存のダイアログは基本的に No でスルーしています。
シンボルファイルをダウンロードするための設定をします。
私の環境では C:symbols にシンボルファイルをダウンロードしているので [SRV*c:symbols*http://msdl.microsoft.com/download/symbols] を設定しています。
# C:sumbols は事前に作成しておきました。
■メモリダンプの解析のはじめの一歩
ここまで終わったらメモリダンプを解析します。
BSOD になった場合、[C:WindowsMEMORY.DMP] が出力されていますのでこれを WinDbg をインストールした環境にコピーします。最小メモリダンプが [C:WindowsMinidump] に出力されているかもしれませんのでこのダンプを使ってみてもいいかもしれないですね。
Windows でデ
バッグ用に作成された最小メモリ ダンプ ファイルを読み取る方法
[File] の [Open Crash Dump] を選択して、クラッシュダンプのファイルを読み込みます。
コマンドとして [!analyze -v] を入力して解析をしても良いのですが、画面に表示されている [!analyze -v] がクリックできるようになっていますのでこれをクリックすると入力しても良いかと。
!analyze -v を実行すると解析がされますのでしばし待ちます。
WinDbg が全然使いこなせていないのでいつも見ているところとしては、
[DEFAULT_BUCKET_ID] と [PROCESS_NAME] をなんとなく眺めてエラーの原因とプロセスを想像してみたり、
[STACK_TEXT] を上からぼーっと眺めてどのような処理が原因だったのかに思いをはせてみたり、
# スタックを上から順に眺めていきます。適切なシンボルファイルが読み込まれているとメソッド名(オブジェクト名?) が表示されるようになります。
[MODULE_NAME] と [IMAGE_NAME] をなんとなく眺めて、このドライバーが原因かなと思ってみたり、
[FAILURE_BUCKET_ID] でどんな処理なのかと想像してみたり、
[MODEULE_NAME] をクリックして、モジュールの更新日付を確認し、最新版が提供されているかを確認 してみたり
といったところでしょうか。
- !analyze -v
- !thread
- r
- kv
- lmnt
- vertarget
- .time
のコマンドぐらいしか使ったことが無いので全然使いこなせていませんが。
# 上記のコマンドのうちいくつかは !analyze -v で合わせて実行されています。
ダンプ解析で日本語の書籍になると、Windowsダンプの極意 エラーが発生したら、まずダンプ解析! しか私は見かけたことが無いかもしれないですね。
洋書だと Memory Dump Analysis Anthology, Volume 5 になるのでしょうか。コマンドを確認するなら Windows Debugging Notebook: Essential User Space WinDbg Commands というものもあるようですね。
私は、こちらのページ や WinDbg. From A to Z! として公開されている資料 (こちら や こちら) や こちら や こちら で少しずつ勉強させていただいています。
バグチェックコードについては Bug Check Code Reference を確認するとよさそうです。
クラッシュダンプの解析やプロセスにアタッチしてのライブデバッグのようなことは少し勉強してみたいですね。
[…] クラッシュダンプ解析のはじめの一歩 at SE の雑記 メモリダンプを解析する […]
【備忘】:KP41エラーが出たときの対策 - ちゃたろうふぁんくらぶ
4 4月 15 at 09:19
[…] :クラッシュダンプ解析のはじめの一歩 […]
ペクトラ6名PT野良、イカロスエラー落ち。。 | TOMORROW ONLINE -Icarus Online Blog-
26 5月 16 at 20:16