Windows のクラッシュダンプを解析する(Windows SDK for Windows 8)
2013/08/10
文書番号:20297
Windows 端末でブルースクリーンなどの障害が発生した時、メモリダンプがあれば問題解決の手がかりになる場合があります。
そのクラッシュダンプ(メモリダンプ)を解析する方法について。
※下記手順はWindows 7 x64 環境で実施しています。
- Windows 用デバッグツールをダウンロードします。
Windows 用デバッグ ツールのダウンロードとインストール
http://msdn.microsoft.com/ja-JP/windows/hardware/gg463009/
ページ内の「Windows 用デバッグ ツールをスタンドアロン コンポーネントとして Windows SDK からインストールする」をクリックします。
クリックで拡大 - 「Windows 8 用 Windows ソフトウェア開発キット (SDK)」のページで「ダウンロード」ボタンをクリックします。
クリックで拡大
「Windows 8 用」と書いてあり、ダウンロードの概要には「Windows SDK for Windows 8」となっていますがページ中ほどのシステム要件を確認するとWindows 7 も対象になっていますのでこれをダウンロードします。
クリックで拡大 - ダウンロードの確認ダイアログが表示されるので「実行」をクリックします。
クリックで拡大 - 実行確認ダイアログが表示されるので「実行」をクリックします。
クリックで拡大 - インストールウィザードが起動します。
「Next」をクリックします。
クリックで拡大
※Windows SDK の一部なのでインストール先は変更できないようです。
- 【Join the Customer Experience Improvement Program(CEIP)】
カスタマエクスペリエンスに参加するかどうかを選択して「Next」をクリックします。
クリックで拡大 - 【License Agreement】
ライセンス条項を確認し、「Accept」をクリックします。
クリックで拡大 - 【Select the features you want to install】
インストール対象を選択します。
メモリダンプの解析のみであれば「Debugging Tools for Windows」のみでOKです。
その他必要に応じて選択します。
「Install」をクリックするとインストールが開始されます。
クリックで拡大 - 【Installing features...】
インストール中です。しばらく待ちます。
クリックで拡大 - 【Welcome to the Windows Software Development Kit!】
インストールが完了したら「Close」をクリックしてウィザードを終了します。
クリックで拡大 - スタートメニューの[すべてのプログラム]-[Windows Kits]-[Debugging Tools for Windows(x86)]-[WinDbg(x86)]を起動します。
※x86かx64かはダンプファイルを出力した端末のそれに合わせるのか…が微妙。
クリックで拡大 - WinDbgを起動したらシンボルファイルのパスを指定します。
[File]メニューから[Symbol File Path ...]をクリックします。
クリックで拡大 - 「Symbol Path」欄に以下のように入力します。
SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
※赤字の部分はローカルのどこに保存するかを指します。環境に合わせて変更してください。
クリックで拡大 - ダンプファイルを開きます。
[File]メニューから[Open Crash Dump ...]をクリックします。
「ファイルを開く」ダイアログが起動しますのでメモリダンプファイルを選択します。
クリックで拡大 - ダンプファイルを開くと以下のような内容が表示されます。
クリックで拡大Microsoft (R) Windows Debugger Version 6.2.9200.20512 X86
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Users\aaa\Desktop\080113-30669-01.dmp]
↑開いたダンプファイルのフルパスが表示されます。
Mini Kernel Dump File: Only registers and stack trace are available
Symbol search path is: SRV*c:\symbols*http://msdl.microsoft.com/download/symbols
↑シンボルファイルの情報が表示されます。
Executable search path is:
Windows 7 Kernel Version 7600 MP (2 procs) Free x86 compatible
↑ダンプを出力したOSのバージョンが表示されます。
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 7600.17273.x86fre.win7_gdr.130318-1532
Machine Name:
↑「MachineName」と項目名は書いてありますがコンピューター名は表示されていません。
Kernel base = 0x83447000 PsLoadedModuleList = 0x8358f810
Debug session time: Thu Aug 1 19:20:39.628 2013 (UTC + 9:00)
↑エラーが発生した日時が表示されます。
System Uptime: 0 days 10:28:56.423
↑OSが起動してエラーが発生するまでの稼働時間が表示されます。
Loading Kernel Symbols
...............................................................
................................................................
.................................
Loading User Symbols
Loading unloaded module list
.....
************************************************************************
* *
* Bugcheck Analysis *
* *
************************************************************************
Use !analyze -v to get detailed debugging information.
↑「!analyze -v」をクリックするとOSの自動解析が開始します。
BugCheck 7A, {c05ef0e8, c0000184, 46217820, bde1d4ee}
↑STOPエラーコードが表示されます。
Probably caused by : discache.sys ( discache!DisQueryObjectIndex+bd )
↑問題の原因と思われるファイルが表示されます。
Followup: MachineOwner
---------
- 「!analyze -v」をクリックしてOSの自動解析を実行します。
詳細情報がダンプされたら内容を確認し、原因と思われる箇所を特定します。
0: kd> !analyze -v
************************************************************************
* *
* Bugcheck Analysis *
* *
************************************************************************
KERNEL_DATA_INPAGE_ERROR (7a)
The requested page of kernel data could not be read in. Typically caused by
a bad block in the paging file or disk controller error. Also see
KERNEL_STACK_INPAGE_ERROR.
If the error status is 0xC000000E, 0xC000009C, 0xC000009D or 0xC0000185,
it means the disk subsystem has experienced a failure.
If the error status is 0xC000009A, then it means the request failed because
a filesystem failed to make forward progress.
Arguments:
Arg1: c05ef0e8, lock type that was held (value 1,2,3, or PTE address)
Arg2: c0000184, error status (normally i/o status code)
Arg3: 46217820, current process (virtual address for lock type 3, or PTE)
Arg4: bde1d4ee, virtual address that could not be in-paged (or PTE contents if arg1 is a PTE address)
Debugging Details:
------------------
ERROR_CODE: (NTSTATUS) 0xc0000184 -
BUGCHECK_STR: 0x7a_c0000184
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: WIN7_DRIVER_FAULT
PROCESS_NAME: WerFault.exe
CURRENT_IRQL: 0
TRAP_FRAME: 8e688548 -- (.trap 0xffffffff8e688548)
ErrCode = 00000000
eax=bde1d4ec ebx=bf2a2024 ecx=8368f6a3 edx=bcc65008 esi=bcc65008 edi=bf2a252c
eip=83663edc esp=8e6885bc ebp=8e6885c4 iopl=0 nv up ei ng nz na po nc
cs=0008 ss=0010 ds=0023 es=0023 fs=0030 gs=0000 efl=00010282
nt!CmpDoCompareKeyName+0x17:
83663edc f6400220 test byte ptr [eax+2],20h ds:0023:bde1d4ee=??
Resetting default scope
LAST_CONTROL_TRANSFER: from 834fb6cd to 83523b3c
STACK_TEXT:
8e6883dc 834fb6cd 0000007a c05ef0e8 c0000184 nt!KeBugCheckEx+0x1e
8e688450 834f394e 8695b324 8e688478 8357b300 nt!MiWaitForInPageComplete+0x2fd
8e6884b4 834ce3aa 8357b300 bde1d4ee 8695b290 nt!MiIssueHardFault+0x3b2
8e688530 8348c8c8 00000000 bde1d4ee 00000000 nt!MmAccessFault+0x29fc
8e688530 83663edc 00000000 bde1d4ee 00000000 nt!KiTrap0E+0xdc
8e6885c4 8364f3ea 8e688678 004f84e8 0000014b nt!CmpDoCompareKeyName+0x17
8e6885ec 8364f2e8 bcc65008 8e688678 8e688640 nt!CmpCompareInIndex+0x3b
8e68860c 836cdae5 bcc65008 00000138 8e688678 nt!CmpFindSubKeyInLeafWithStatus+0x65
8e688648 8367e57d 8e688678 8e6886ec 8e6888a0 nt!CmpFindSubKeyByNameWithStatus+0xb5
8e6887d0 8366870b 8b2081c8 85f93508 88cb6d20 nt!CmpParseKey+0x938
8e68884c 8368e959 80002fc8 8e6888a0 00000240 nt!ObpLookupObjectName+0x4fa
8e6888ac 83686094 8e688a80 85f93508 8e688900 nt!ObOpenObjectByName+0x165
8e68898c 83689e1b 8e688aac 000f003f 8e688a80 nt!CmOpenKey+0x1f4
8e6889ac 834896da 8e688aac 000f003f 8e688a80 nt!NtOpenKey+0x18
8e6889ac 83487a7d 8e688aac 000f003f 8e688a80 nt!KiFastCallEntry+0x12a
8e688a30 9201a838 8e688aac 000f003f 8e688a80 nt!ZwOpenKey+0x11
8e688b24 92019657 80002fc8 000166af 00520000 discache!DisQueryObjectIndex+0xbd
8e688bc0 92015be2 800030dc 800028f8 00000000 discache!DisCreateFileObjectRecord+0xe4
8e688c28 83633806 00000144 0015ca18 00001000 discache!ScQueryAttributeInformation+0x170
8e688c4c 836a407d 00000144 0015ca18 00001000 nt!ExQueryAttributeInformation+0x4d
8e688d18 834896da 00000144 000eda94 0015ca18 nt!NtQueryInformationFile+0x1ab
8e688d18 771c6194 00000144 000eda94 0015ca18 nt!KiFastCallEntry+0x12a
WARNING: Frame IP not in any known module. Following frames may be wrong.
000edac4 00000000 00000000 00000000 00000000 0x771c6194
STACK_COMMAND: kb
FOLLOWUP_IP:
discache!DisQueryObjectIndex+bd
9201a838 3bc3 cmp eax,ebx
SYMBOL_STACK_INDEX: 10
SYMBOL_NAME: discache!DisQueryObjectIndex+bd
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: discache
↑問題が発生したモジュール「discache」をクリックするとその詳細が表示される
IMAGE_NAME: discache.sys
DEBUG_FLR_IMAGE_TIMESTAMP: 4a5bc214
FAILURE_BUCKET_ID: 0x7a_c0000184_discache!DisQueryObjectIndex+bd
BUCKET_ID: 0x7a_c0000184_discache!DisQueryObjectIndex+bd
Followup: MachineOwner
---------
- 「discache」をクリックして表示された詳細情報
0: kd> lmvm discache
start end module name
92014000 92020000 discache (pdb symbols) c:\symbols\discache.pdb\1F3066C30EA34CC381D3006454C11BD11\discache.pdb
Loaded symbol image file: discache.sys
Mapped memory image file: c:\symbols\discache.sys\4A5BC214c000\discache.sys
Image path: discache.sys
Image name: discache.sys
Timestamp: Tue Jul 14 08:24:04 2009 (4A5BC214)
CheckSum: 0000EDA3
ImageSize: 0000C000
File version: 6.1.7600.16385
Product version: 6.1.7600.16385
File flags: 0 (Mask 3F)
File OS: 40004 NT Win32
File type: 2.0 Dll
File date: 00000000.00000000
Translations: 0409.04b0
CompanyName: Microsoft Corporation
ProductName: MicrosoftR WindowsR Operating System
InternalName: syscache.sys
OriginalFilename: syscache.sys
ProductVersion: 6.1.7600.16385
FileVersion: 6.1.7600.16385 (win7_rtm.090713-1255)
FileDescription: System Indexer/Cache Driver
LegalCopyright: c Microsoft Corporation. All rights reserved.
WinDbgを起動してシンボルファイルのパスを毎回設定するのが面倒な場合は環境変数に登録することもできます。
- 「コンピューター」のプロパティを起動します。
「システムの詳細設定」をクリックします。
クリックで拡大 - [詳細設定]タブの「環境変数」ボタンをクリックします。
クリックで拡大 - システム環境変数の「新規」ボタンをクリックします。
クリックで拡大 - 変数名を「_NT_SYMBOL_PATH」とし、
変数値に「SRV*c:\symbols*http://msdl.microsoft.com/download/symbols」
と設定します。
※赤字の部分はローカルのどこに保存するかを指します。環境に合わせて変更してください。
クリックで拡大 - [OK]ボタンで閉じて終了です。
これで毎回シンボルファイルのパスを登録する必要はなくなります。
クリックで拡大
ブルー スクリーンの問題: クラッシュ ダンプや Web から手掛かりを見つける
STOPエラーコードの一覧
クラッシュダンプ解析のはじめの一歩
Ask CORE メモリダンプを解析する