新裝某個第三方工具後有點小後悔,對其來歷沒有十足把握,擔心其中暗藏木馬病毒,邊想邊開Chrome瀏覽網頁、下載檔案,說時遲那時快,我的Windows 8.1冒出詭異哭臉,靠!BSOD!(Blue Screen of Death,就是俗稱的藍白當機畫面)
(沒來得及拍照片,從網路找到訊息相同的BSOD畫面,來源)
重開機後一切看似正常,本可一笑置之,但當機前一刻才懷疑某個軟體藏毒,時機巧合到令人不安。經使用windbg檢查,初步排除木馬病毒嫌疑,這才安了心。
回頭檢視,使用Windows Debugger檢查記憶體傾印檔(Memory Dump)的步驟並不算複雜,不一定要工程師才能處理,突發奇想,整理出簡單步驟,讓非技術咖的朋友也有緣藉此初步診斷當機原因。(註:還是得看綠份,如果讀完本文仍一頭霧水,代表機緣尚未成熟,施主請回)
當機畫面出現collecting some error info…字樣以及執行百分比,代表Windows已將關鍵的記憶體內容保存寫入磁碟(稱為Memory Dump,記憶體傾印檔),就像行車記錄器拍下事故發生現場的畫面,方便事後調查分析。但這種「行車記錄畫面」需要特殊程式解讀,這支特殊程式叫做Windows Debugger(WinDbg),程式名稱跟操作畫面都很可怕,WinDbg讓專家得以剖析Memory Dump找出當機細節,追查肇事責任,但此非一般人能力所及(我也沒這本事)。所幸,WinDbg也提供簡易的傻瓜模式,能約略指出當機由哪一支程式或那個環節造成的,對我們來說,這樣就很夠了。
首先,要找出Memory Dump所在位置,事件檢視器可以幫上一些忙:(在Windows 8.1的開始鈕右鍵選單可開啟事件檢視器,它屬於系統事件)
如果你從來沒有安裝過Windows Debugger,要先下載安裝Windows 8.1 SDK。安裝時務必選取Debugging Tools for Windows,其他項目可不選:
安裝完畢,執行WinDbg(X64):
分析Memory Dump時需從微軟網站下載必要的符號檔(Symbol),第一次啟用前需設定Symbol伺服器及Symbol檔存放位置,請先選Symbol File Path,輸入SRV*X:\Symbol*http://msdl.microsoft.com/download/symbols(X:\Symbol為存放Symbol檔的資料夾,路徑請自行修改),按下OK,並執行Save Workspace讓WinDbg記住設定:
以上操作只需做一次,之後不管當機一百次一千次(呸呸呸!),直接Open Crash Dump開啟Memory Dump就可以分析。
剛才在事件檢視器已知dmp檔被放在C:\Windows\MiniDump:
開啟後,WinDbg將下載必要的Symbol檔,過程需要一些時間,請耐心等侯。Symbol載入完成後,下方的0: kb>輸入框可以輸入分析指令(在此之前會出現Debuggee not connected字樣,代表尚在準備中),WinDbg很貼心地在訊息中給了個「!analyze -v」超連結,這是我們唯一要用的101個指令,按下去將執行自動化分析,如果分析不出什麼,也就沒招了。所幸在經驗中,它的分析結果已能提供足夠的當機線索。
在本案例,!analyze -v指出當機是由Chrome引起的!而我想起,在安裝第三方工具前Chrome就已經出現多次卡住凍結,而當機前一刻也在用Chrome在瀏覽網頁,以此推論,初步排除第三方工具有毒的嫌疑。
追加另一則當機分析,分析結果可看出為Win8驅動程式出錯引起:
以上兩次當機個案,經由WinDbg對Memory Dump的簡單分析,雖然只非常粗略地指出當機範圍(Chrome、驅動程式),但參酌當機前夕對電腦的調整與操作,仍遠勝「怎麼死的都不知道」。
希望以上介紹能減少大家在面對Windows藍白當機畫面時的茫然,願原力與你同在~