427
雲更新
使用windbg排查各種應用程序報錯
【問題現象】
explorer.exe 應用程序報錯。
如圖
【原因說明】
遇到explorer.exe應用程序報錯,正常來講explorer.exe 不會無緣無故的報錯,一般都是第三方DLL 異常導致報錯,然而如何快速的定位是哪個dll 程序是一個問題。
首先經常用到的定位報錯DLL的方法就是使用進程工具PCHunter 查看explorer.exe 加載的多少模塊,然後根據公司名來先排除微軟的本身的DLL模塊,然後再逐一刪除排查具體是什麼模塊導致的報錯。如下圖 使用PCHunter 選取一個explorer.exe 然後右鍵 “查看進程模塊”,紅色的圈起來的都有可能是導致崩潰的DLL模塊,在這裏我是先把微軟的DLL排除,當然有些偽裝微軟的就要細心的觀察才能發現。
【解決方案】
然後我們今天說的重點是windbg 來快速定位報錯。
以explorer.exe 進程報錯,簡單說的 一下排查的步驟。
1)我們先要準備的兩款工具 windbg + PCHunter(前身Xuetr)
2)由於explorer.exe 崩潰的特殊性,我們要先同時打開 windbg,然後選擇File->Open Executable... 然後瀏覽到報錯的進程c:\windows\explorer.exe 先不要急著打開,再打開任務管器結束explorer.exe 快速的點擊 windbg 的打開按鈕。
如圖:
3)然後就會出現一個中斷,然後我們輸入 g 繼續執行,再報錯的時候它會自動中斷。
如圖:
4)再次中斷之後我們輸入 kb 就可以查看堆棧裏 cakeu32+0x59dd 異常,向上拉可以查看到報錯的DLL的路徑 c:\program files\aik1546\cakeu32.dll 報錯。
5)驗證問題,找到DLL之後就該驗證是不是它導致的報錯
打開PCHunter 找到explorer.exe 右建查看模塊信息,找到 c:\program files\aik1546\cakeu32.dll 右鍵刪除之。
6)結束一把explorer.exe 世界安靜了,不再報錯。
7)至於 這個 c:\program files\aik1546\cakeu32.dll 誰創建的,大家以後有遇到可以用360MD 開機監控。
此方法可以同樣可以應用到其它應用程序報錯,比如IE報錯。(注:此方法不適合排查遊戲報錯,因為遊戲一般會檢測調試軟件。)
最後更新:2017-02-04 19:58:35