メモリダンプを解析する

Windows テクノロジー サポートの永野です。

ダンプの設定やサイズのお話をしましたので、今回は実際に解析しましょう。

 

まずは、以下のサイトからデバッガをダウンロードして、インストールしてください。

32bit版

https://www.microsoft.com/whdc/devtools/debugging/installx86.mspx

64bit版

https://www.microsoft.com/whdc/devtools/debugging/install64bit.mspx

 

インストールが完了したら、シンボルのありかを環境変数に登録します。

[システムのプロパティ] - [環境変数] を開きます。

ユーザでもシステムでも構わないので、[新規] をクリックします。

変数名に "_NT_SYMBOL_PATH"、変数値に "SRV*c:\websymbols*https://msdl.microsoft.com/download/symbols" を登録します。

C: ドライブに websymbols フォルダを作成してください。

 

これで環境が整いました。早速起動しましょう。

スタートメニューから Debugging Tools for Windows をたどって、WinDbg を選択してください。

起動したら [File] - [Open Crash Dump] から解析対象のダンプを選択します。

ちょっと時間がかかりますが、こんな画面が出ます。

ここで、

    !analyze -v

と入力してください。

デバッガによる自動解析が始まります。

今回解析したダンプは、こんな感じでした。

 

1: kd> !analyze -v
*******************************************************************************
*                                                                             *
*                        Bugcheck Analysis                                    *
*                                                                             *
*******************************************************************************

MANUALLY_INITIATED_CRASH (e2)
The user manually initiated this crash dump.
Arguments:
Arg1: 00000000
Arg2: 00000000
Arg3: 00000000
Arg4: 00000000

Debugging Details:
------------------

BUGCHECK_STR:  MANUALLY_INITIATED_CRASH

DEFAULT_BUCKET_ID:  VISTA_DRIVER_FAULT

PROCESS_NAME:  System

CURRENT_IRQL:  5

LAST_CONTROL_TRANSFER:  from 8fd53c6b to 81d070e3

STACK_TEXT: 
805ecc40 8fd53c6b 000000e2 00000000 00000000 nt!KeBugCheckEx+0x1e
805ecc70 8fd54174 00d54920 0026ebd8 00000000 i8042prt!I8xProcessCrashDump+0x255
805eccb8 81c8d941 871e0280 86d54868 805ecce4 i8042prt!I8042KeyboardInterruptService+0x21e
805eccb8 81ceeeae 871e0280 86d54868 805ecce4 nt!KiInterruptDispatch+0x51
805ecd54 00000000 0000000e 131542b4 0d7306da nt!KiIdleLoop+0x1a

STACK_COMMAND:  kb

FOLLOWUP_IP:
i8042prt!I8xProcessCrashDump+255
8fd53c6b 83fe01          cmp     esi,1

SYMBOL_STACK_INDEX:  1

SYMBOL_NAME:  i8042prt!I8xProcessCrashDump+255

FOLLOWUP_NAME:  MachineOwner

MODULE_NAME: i8042prt

IMAGE_NAME:  i8042prt.sys

DEBUG_FLR_IMAGE_TIMESTAMP:  47918f5d

FAILURE_BUCKET_ID:  MANUALLY_INITIATED_CRASH_i8042prt!I8xProcessCrashDump+255

BUCKET_ID:  MANUALLY_INITIATED_CRASH_i8042prt!I8xProcessCrashDump+255

Followup: MachineOwner
---------

 

今回、ブルースクリーンを発生させたモジュールがサクッと表示されます。

MODULE_NAME: i8042prt

IMAGE_NAME:  i8042prt.sys

ここに表示されたモジュールが犯人の可能性があります。

モジュールをアップデートすることで、障害が起きなくなるかどうか等、試してみてはいかがでしょうか?

 

ちなみに落ちた理由も、自動解析で表示されます。

今回は、

MANUALLY_INITIATED_CRASH (e2)
The user manually initiated this crash dump.

なので、ユーザが自ら採取したダンプであることがわかります。

自分でダンプを採取して、遊びたい人のために次回はその方法をご紹介する予定です。