用windbg分析minidump

許多人可能經常遇見計算機頻繁重新啓動的問題,總是難於解決問題,最後只能重新安裝操作系統.我介紹的這篇文章應該能解決許多人這樣的痛苦.

  通常在蕩機的瞬間,操作系統會形成一個存儲器轉儲文件。 這個文件是當計算機死機的瞬間的內存的映像.該文件通常放置在系統目錄下的minidum目錄下.例如 C:/WINDOWS/Minidump/Mini082106-01.dmp. 所以對該文件的分析就能很快查找到問題的所在.

  這個文件打開看看將發現是一堆亂碼.怎麼分析該文件呢.通常我們使用 microsoft 提供的 WinDbg 工具來分析.這個工具可以從網站上下載得到.:http://www.microsoft.com/whdc/devtools/debugging/default.mspx

  當安裝這個工具後,則就可以使用 WinDbg 來對 mimidump文件進行分析了.打開WinDbg ,首先要設置符號文件路徑.符號文件是用來分析錯誤原因位置信息的文件.這個文件可以從  的網站隨着WinDbg 一起下載,當然了比較大了.如果你不願意下載,則可以設置連接到網站上的地址就可以了.我通常採用這種方法.

  設置符號文件的地址: 在WinDbg 的菜單中: File--> Symbol File Path 中,設置 :

SRV*DownstreamStore*http://msdl.microsoft.com/download/symbols ,如下圖:查看更多精彩圖片

 

然後就可以打開 minidump文件進行分析了 .  File--> Open Crash Dump , ,例如打開 C:/WINDOWS/Minidump/Mini082106-01.dmp .等待一會,根據前面設置的符號文件的地址,windbg 連接到 microsoft 的網站,得到符號信息.

這個時候 在WinDbg 下面的命令行運行: !analyze -v 將得到詳細的信息. 例如我得到的信息如下:

 

 

查看更多精彩圖片

 

  從這裏我們可以知道當前錯誤是出在SkyProcs.sys這個文件上(ERROR: Module load completed but symbols could not be loaded for SkyProcs.sys ). 至於具體的原因就是RIVER_IRQL_NOT_LESS_OR_EQUAL ,這個錯誤一般是驅動程序中IRQL的問題.

  如果不懂這些技術問題,就查找到SkyProcs.sys這個文件,然後就知道了是哪個程序出現了問題,刪除或者卸載掉該軟件,一般情況下就能解決計算機頻繁重新啓動的問題.到現在看來這個問題的原因多數的安裝的驅動程序出現了問題.

  附加:

  一般的情況下,計算機上都自動設置了minidump 的轉儲,假設沒有,則按照下面的步驟進行設置,只有形成了MINIDUMP文件,才能進行分析.

  配置轉儲類型 ,要配置啓動和故障恢復選項以使用小存儲器轉儲文件,請按照下列步驟操作。

注意:由於 Microsoft Windows 有多個版本,因此下列步驟可能與在您的計算機上執行的步驟有所不同。如果是這樣,請參閱您的產品文檔來完成這些步驟。

1: 單擊“開始”,指向“設置”,然後單擊“控制面板”。

2: 雙擊“系統”。

3: 單擊“高級”選項卡,然後單擊“啓動和故障恢復”下的“設置”。

4: 在“寫入調試信息”列表中單擊“小存儲器轉儲 (64k)”。

要更改小存儲器轉儲文件的文件夾位置,請在“轉儲文件”框中(或在“小轉儲目錄”框中,具體取決於 Windows 的版本)鍵入新路徑。

Microsoft (R) Windows Debugger Version 6.7.0005.1
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:/WINDOWS/Minidump/Mini070208-04.dmp]
Mini Kernel Dump File: Only registers and stack trace are available
Symbol search path is: SRV*DownstreamStore*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows XP Kernel Version 2600 (Service Pack 2) MP (2 procs) Free x86 compatible
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 2600.xpsp_sp2_gdr.070227-2254
Kernel base = 0x804d8000 PsLoadedModuleList = 0x805634a0
Debug session time: Wed Jul 2 06:22:29.015 2008 (GMT+8)
System Uptime: 0 days 0:12:21.733
Loading Kernel Symbols
............................................................................................................
Loading User Symbols
Loading unloaded module list
...........
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 1A, {41284, c8abd001, 4b5e, c0c00000}
Probably caused by : memory_corruption ( nt!MiLocateWsle+c0 )
Followup: MachineOwner
---------
1: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
MEMORY_MANAGEMENT (1a)
# Any other values for parameter 1 must be individually examined.
Arguments:
Arg1: 00041284, A PTE or the working set list is corrupt.
Arg2: c8abd001
Arg3: 00004b5e
Arg4: c0c00000
Debugging Details:
------------------
BUGCHECK_STR: 0x1a_41284
CUSTOMER_CRASH_COUNT: 4
DEFAULT_BUCKET_ID: COMMON_SYSTEM_FAULT
PROCESS_NAME: System
LAST_CONTROL_TRANSFER: from 8052abf2 to 8053838a
STACK_TEXT:
f7969bf0 8052abf2 0000001a 00041284 c8abd001 nt!KeBugCheckEx+0x1b
f7969c28 804f56b5 00004b5e 82f1f008 82fa55a8 nt!MiLocateWsle+0xc0
f7969c68 805709c2 c8abd000 82f1c170 00000000 nt!MmUnmapViewInSystemCache+0xc2
f7969c80 804f5638 82fa55a8 82f1f008 00000000 nt!CcUnmapVacb+0x2a
f7969cb0 804f5b44 00000000 00000000 82f1f06c nt!CcUnmapVacbArray+0xe5
f7969ccc 804f5ab6 82f1f008 80700a4c 82f1f008 nt!CcUnmapAndPurge+0x20
f7969cfc 804ee808 00000001 8055f690 82f059e0 nt!CcDeleteSharedCacheMap+0xc5
f7969d34 804e77c8 82fb6098 8056a4c0 82fb65b8 nt!CcWriteBehind+0x357
f7969d7c 804e33b5 82fb6098 00000000 82fb65b8 nt!CcWorkerThread+0x12f
f7969dac 80575128 82fb6098 00000000 00000000 nt!ExpWorkerThread+0xef
f7969ddc 804ed781 804e32f1 00000000 00000000 nt!PspSystemThreadStartup+0x34
00000000 00000000 00000000 00000000 00000000 nt!KiThreadStartup+0x16
STACK_COMMAND: kb
FOLLOWUP_IP:
nt!MiLocateWsle+c0
8052abf2 006a00 add byte ptr [edx],ch
SYMBOL_STACK_INDEX: 1
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: nt
DEBUG_FLR_IMAGE_TIMESTAMP: 45e54690
SYMBOL_NAME: nt!MiLocateWsle+c0
IMAGE_NAME: memory_corruption
FAILURE_BUCKET_ID: 0x1a_41284_nt!MiLocateWsle+c0
BUCKET_ID: 0x1a_41284_nt!MiLocateWsle+c0
Followup: MachineOwner

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章