閱讀427 返回首頁    go 雲更新


使用windbg排查各種應用程序報錯

【問題現象】

explorer.exe 應用程序報錯。

如圖

125136smr07j9mamtx090z

 


【原因說明】

遇到explorer.exe應用程序報錯,正常來講explorer.exe 不會無緣無故的報錯,一般都是第三方DLL 異常導致報錯,然而如何快速的定位是哪個dll 程序是一個問題。

首先經常用到的定位報錯DLL的方法就是使用進程工具PCHunter 查看explorer.exe 加載的多少模塊,然後根據公司名來先排除微軟的本身的DLL模塊,然後再逐一刪除排查具體是什麼模塊導致的報錯。如下圖 使用PCHunter 選取一個explorer.exe 然後右鍵 “查看進程模塊”,紅色的圈起來的都有可能是導致崩潰的DLL模塊,在這裏我是先把微軟的DLL排除,當然有些偽裝微軟的就要細心的觀察才能發現。

QQ截圖20140422134039

 

 


【解決方案】

然後我們今天說的重點是windbg 來快速定位報錯。

以explorer.exe 進程報錯,簡單說的 一下排查的步驟。

1)我們先要準備的兩款工具 windbg + PCHunter(前身Xuetr)
2)由於explorer.exe 崩潰的特殊性,我們要先同時打開 windbg,然後選擇File->Open Executable... 然後瀏覽到報錯的進程c:\windows\explorer.exe 先不要急著打開,再打開任務管器結束explorer.exe 快速的點擊 windbg 的打開按鈕。

如圖:

125608zjbpud8lvdwujdnt

 

3)然後就會出現一個中斷,然後我們輸入 g 繼續執行,再報錯的時候它會自動中斷。

如圖:

132049cxbzx7bxdi44d7l3

 

132144s6696zm6i66ii666

 

4)再次中斷之後我們輸入 kb 就可以查看堆棧裏 cakeu32+0x59dd 異常,向上拉可以查看到報錯的DLL的路徑 c:\program files\aik1546\cakeu32.dll 報錯。

132227dhwrxnf3lfrq55mn

 

 

5)驗證問題,找到DLL之後就該驗證是不是它導致的報錯
打開PCHunter 找到explorer.exe 右建查看模塊信息,找到 c:\program files\aik1546\cakeu32.dll 右鍵刪除之。

133923mf7dwidflmoofouf

 

 

6)結束一把explorer.exe 世界安靜了,不再報錯。

7)至於 這個 c:\program files\aik1546\cakeu32.dll 誰創建的,大家以後有遇到可以用360MD 開機監控。

 

此方法可以同樣可以應用到其它應用程序報錯,比如IE報錯。(注:此方法不適合排查遊戲報錯,因為遊戲一般會檢測調試軟件。

 

最後更新:2017-02-04 19:58:35

  上一篇:go 為什麼設了一個開機任務後,開機不執行?
  下一篇:go 虛擬盤使用的端口是什麼?