如何診斷和調試Windows系統藍屏

今天和大家來談談當碰到系統藍屏時應該去如何應對,Windows藍屏是微軟終極錯誤報告方式,也在微軟內部稱爲藍屏之死,可能我們碰到系統藍屏是非常突然的,沒有前期預兆和準備,只能重新啓動從而導致數據的丟失。所以它是一個比較嚴重的錯誤了。微軟DDK對藍屏有一個官方定義:當windows操作系統遇到一種可能損害系統安全的情況,系統就會停止響應,這種情況被稱爲錯誤檢查,也會被認爲內核錯誤或系統錯誤。大家有沒有想過Windows爲什麼要藍屏,其實原因很簡單,操作系統檢測到了有人已經違反了系統的規則並危及系統安全,而操作系統必須要將它KILL掉,又因爲它是內核態的代碼並且權限很高,所以Windows就不會發現錯誤報告了,只能採用藍屏方式。就像我們在運動比賽中一樣,運動員違規比賽規則的話,裁判就會出去紅牌讓他離場。
我在這裏先截張圖給大家看看。
無標題
我就來介紹上面藍屏的錯誤,首先我標出的第一個框是藍屏的序言,表明Windows已經檢測到了一個問題已經停止運行,並防止對你的計算機造成損害,基本所有的系統藍屏的序言都是這樣一個描述;我標出的第二個框是藍屏錯誤情況的描述,這個描述根據不同類型的藍屏會產生不會的描述,我們現在看到的描述是對於系統操作的一個關鍵線程或者關鍵進程被意外的退出或終止;我標出的第三個框是藍屏的建議錯誤,也和藍屏序言一樣,是所有系統藍屏都是一樣的描述,應該來說對IT人員的意義不大,大概意思是讓你重新啓動計算機,確保你的硬件和軟件是否被正確安全,如果問題依舊,建議你刪除你的硬件或軟件,如果還不行就進入系統的高級模式。我標出的第四個框是藍屏的錯誤代碼和參數,也是藍屏錯誤中最爲關鍵最爲核心的信息,對我們IT人員分析和解決藍屏問題是十分重要的信息。0x000000F4是藍屏的停止代碼,括號裏面的四個參數是藍屏停止參數;我標出的第五個框是藍屏的轉儲信息,也稱爲Dump信息,也就是說Windows把發生藍屏時的關鍵信息轉儲到文件中。
p_w_picpath
我上面的這張截圖就是設置操作系統在內核轉儲時的必要設置,自動重新啓動就是說當系統發生藍屏時會自動重啓,通常我們會取消勾選,不然我們就看不到藍屏錯誤代碼了,還有就是寫入調試信息,我們通常選擇的是小內核轉儲文件,而不會選擇核心內核轉儲,不然產生的DUMP文件會非常的大,而小內核轉儲才64KB,不要小看這64KB的文件,裏面的信息全部都是系統在轉儲過程中的關鍵信息,對IT人員來說是足以進行藍屏的調試工作的。最後就是DUMP文件的存放位置了。
OKAY,談了這麼多了,我準備想把藍屏在轉領過程中發生一些動作詳細的告訴給大家,比如藍屏的信息收集、關閉中斷、調用一些回調函數、藍屏是如何繪製的等,但是,考慮到這是操作系統的一些底層內容,大家肯定感到很煩了,那麼我就言歸正傳了,給大家推出一款非常實用的微軟藍屏調試工具,它就是WinDebuger,簡稱Windbg。我提供了它的下載路徑,大家有時間可以下載體驗下。
32 bit
[url]http://msdl.microsoft.com/download/symbols/debuggers/dbg_x86_6.7.05.0.exe[/url]
64 bit
[url]http://msdl.microsoft.com/download/symbols/debuggers/dbg_ia64_6.7.05.0.exe[/url]
1
這就是我安裝好Windbg出現的調試畫面,感覺十分樸實啊!!
1
下面,就是設置Symbol File Path,這邊我要和大家解釋一下這是什麼意思,其實這個設置就是把我們生成的DUMP轉儲文件,先提交給微軟的Symbol 服務器進行編譯,因爲DUMP文件缺省是一些二進制的編碼,我們普通人是看不通的,要把它編譯成我們能識別的代碼,其實這裏的Symbol File Path裏面就是微軟Symbol 服務器的地址,這裏我有一篇微軟KB來解釋使用 Microsoft Symbol Server 獲取調試符號文件。[url]http://support.microsoft.com/kb/311503[/url]。我下面就給大家來SHOW一下,我把我操作系統下生成的一個MINI Dump文件進行簡單的調試,並給大家看看Windbg是如何工作的。
2
打開一個Crash Dump文件
3
在C:\windows\minidump\下生成了一個64KB的文件,後綴名爲.dmp格式
4
Windbg自動加載此Dump文件,此時正在連接微軟的Symbol服務器
5
Dump文件已經被加載成功,並已經正確的連接上了微軟的Symbol服務器了
6
此時,我們在下面的輸入框中輸入!analyze -v 參數
7
Windbg會自動的幫我們進行簡單的文件分析,並生成一些對我們IT人員來說有價值的調試信息,比如堆棧信息,處理對象,映像名稱等,對我們IT管理員來說只要看看Image_Name就可以了,通常這裏會出現一個文件名稱,比如驅動文件名稱等,我們就可以初步判斷藍屏可能是由一些第三方驅動錯誤所導致的,這樣我們就可以在系統下刪除這個文件進行嘗試。
8
我們還可以輸入KD或者KC的命令進行底層堆棧的排錯,可能這邊一般人會感覺痛苦了,這需要微軟的系統開發人員纔可能達到的水平。
好了,就介紹到這裏了,感覺有點像是介紹微軟操作系統內核知識一樣,這個工具希望大家多研究研究,這個工具是有幫助文檔的,大家可以對照文檔進行調試,並使用相應的命令。
Technorati 標籤: windows
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章