前言
windows藍屏之后,單單通過藍屏代碼,很難定位問題!分析一下dmp文件,就準確多了!
這是一篇老文章了,原文鏈接早已不能訪問,但是并不影響它的價值!
對于運維人員而言,非常有必要了解一下.dmp文件的分析!
原文
一、WinDbg是什么?它能做什么?
WinDbg是在windows平臺下,強大的用戶態和內核態調試工具。它能夠通過dmp文件輕松的定位到問題根源,可用于分析藍屏、程序崩潰(IE崩潰)原因,是我們日常工作中必不可少的一個有力工具,學會使用它,將有效提升我們的問題解決效率和準確率。
二、WinDbg6.12.0002.633下載:
x86位版本下載:【微軟官方安裝版】
藍屏Dump分析工具WinDbg(x86).rar
x64位版本下載:【微軟官方安裝版】
藍屏Dump分析工具WinDbg(x64).rar
三、設置符號表:
符號表是WinDbg關鍵的“數據庫”,如果沒有它,WinDbg基本上就是個廢物,無法分析出更多問題原因。所以使用WinDbg設置符號表,是必須要走的一步。
1、運行WinDbg軟件,然后按【Ctrl+S】彈出符號表設置窗
2、將符號表地址:SRV*C:Symbols*http://msdl.microsoft.com/download/symbols粘貼在輸入框中,點擊確定即可。
注:紅色字體為符號表本地存儲路徑,建議固定路徑,可避免符號表重復下載。
四、學會打開第一個dmp文件!
當你拿到一個dmp文件后,可使用【Ctrl+D】快捷鍵來打開一個dmp文件,或者點擊WinDbg界面上的【File=>Open Crash Dump...】按鈕,來打開一個dmp文件。第一次打開dmp文件時,可能會收到如下提示,出現這個提示時,勾選“Don't ask again in this WinDbg session”,然后點否即可。
當你想打開第二個dmp文件時,可能因為上一個分析記錄未清除,導致無法直接分析下一個dmp文件,此時你可以使用快捷鍵【Shift+F5】來關閉上一個dmp分析記錄。
至此,簡單的WinDbg使用你已經學會了!
五、通過簡單的幾個步驟學會分析一些dmp文件。
分享一個8E藍屏dmp案例的分析過程:
當你打開一個dmp文件后,可能因為太多信息,讓你無所適從,不過沒關系,我們只需要關注幾個關鍵信息即可。
第一個關鍵信息:System Uptime(開機時間):
通過觀察這個時間你就可以知道問題是在什么時候出現的,例如時間小于1分鐘基本可以定位為開機藍屏,反之大于一分鐘則可證明是上機后或玩的過程中出現問題了。
接下來用一個簡單的例子來學習簡單的dmp分析,下圖中System Uptime: 0 days 0:14:23.581,意思是0天(days)0小時14分23秒581毫秒時出現藍屏了,看來是上機沒多久就藍屏了,這位顧客很悲催……
那么是什么導致藍屏的呢?接下來我們就要注意第二個關鍵信息了!
第二個關鍵信息:Probaly caused by(造成藍屏可能的原因)
這個信息是相對比較重要的一個信息,如果你運氣好的話,通過這個信息基本上可以看到導致藍屏的驅動或者程序名稱了,就像下圖一樣,初步的分析已經有了結果,Probaly caused by后面顯示的是一個名為KiMsgProtect.sys的驅動文件導致藍屏,這個文件就是恒信一卡通的一個關鍵驅動。因此藍屏則很有可能和一卡通有關。
括號中驅動文件名后面的+號代表的是偏移地址,假如多個dmp文件的驅動文件名一樣,且偏移地址也一樣,則問題原因極有可能是同一個,這個偏移地址與匯編有關,這里不多做介紹。
其實,對于分析藍屏dmp并不是每次運氣都那么好,假如剛剛打開dmp文件未看到明確的藍屏原因時,我們就需要借助一個命令來進一步分析dmp,這個命令就是:!analyze -v,這個命令能夠自動分析絕大部分藍屏原因。當初步分析沒有結果時,可以使用該命令進一步分析故障原因,當然你也可以直接點擊鏈接樣式的!analyze -v來進行執行該命令,為了讓大家更直觀的看懂里面的信息,大家可以直接看圖片中的注釋信息。
看了這么多信息之后,這個藍屏dmp到底是怎么回事呢?根據dmp給出的信息,應該是:顧客上機0天(days)0小時14分23秒581毫秒時,一個名為PinyinUp.exe觸發了KiMsgProtect.sys這個驅動的一個Bug,導致藍屏。
那么PinyinUp.exe和KiMsgProtect.sys都是哪個廠商的?一般要知道這個信息,只能去用戶的機器上找了,我去找了之后發現PinyinUp.exe是搜狗輸入法的自動升級程序,KiMsgProtect.sys是恒信一卡通這個計費軟件的驅動,所以這個dmp表示出來的意思看上去是搜狗拼音和恒信一卡通搞在一起,出了問題!當然排除方法很簡單,把搜狗輸入法的自動升級程序刪除掉,再看看是否仍然有藍屏問題發生就ok了!
學到這里,基本上已經可以分析絕大部分dmp文件了,但是分析藍屏dmp要比較謹慎,對信息需要重新驗證一次才更加保險,驗證方法很簡單,在WinDbg的命令輸入框內,輸入!process命令,就可以驗證觸發藍屏的程序到底是否正確了。
運行!process命令后得到的信息:
至此,掌握以上幾個簡單的分析方法之后,基本上絕大多數dmp大家都可以獨立分析了,當然WinDbg是個強大的工具,同時藍屏的原因也有很多,如果想分析的足夠準確,那么就只有多學多練,多去分析,因為WinDbg分析除了懂得幾個命令之外,經驗更加重要!
合理再給大家一些分析建議:
并不一定每個dmp文件都可以分析出有用的結論,因此分析dmp并不需要對每個dmp文件的結果過分糾結,其實藍屏dmp分析也是觀察一個規律或者規模的問題定位方法而已。例如你分析了10個dmp,有5個dmp都指向同一個藍屏原因,另外5個dmp的信息五花八門時,那么你完全可以先處理掉5次藍屏,同一個原因的問題,因為解決了這個問題之后,后面的問題可能就都解決了!
vDiskBus+da6c這個藍屏信息是指網維大師藍屏硬盤的dmp捕捉機制,這并不是藍屏原因,有很多朋友因為文章看到一半就去折騰,結果得出一些錯誤結論,所以這里特意提醒下大家,看到vDiskBus+da6c這個信息之后,就不要再判斷錯誤了,這個信息可以證實的信息是:這個dmp文件是通過網維大師藍屏鷹眼捕捉到的,且是在網維無盤客戶機上捕捉到的,其它的就不能代表什么了。
聲明: 本文由(死性不改)原創編譯,轉載請保留鏈接:http://support.icafe8.com/technologynews/focus/932.html