[Other]除錯工具大全
今天在公司舉辦了一場問題排除的經驗分享,課程時間大約三個小時,以下截取部分內容,下面列個大綱提供給各位參考。
問題處理步驟
這一段主要說明當我們面對一個問題時,會有哪幾個步驟,其實這是濃縮版,正確的版本是有八個步驟,但這邊我只截取對一般問題處理人員比較重要的幾個點蘭說明:
- 確認問題:
- 掌握客戶端發生了什麼錯誤?確保我們理解的錯誤是對的。
- 確認錯誤的程式,客戶常常會說每支程式都會有相同的錯誤,但釐清後往往不見得是這個樣子,所以確認錯誤的程式也是很重要的。
- 假設這是一個運行好一陣子的系統,知道整個環境在何時被異動過就很重要了,可能是在某次修改了某個設定後出錯,又或者是版更程式後出錯,這些問題都有助於我們離清真相。(沒錯,真相往往只有一個...)
- 我們要如何重現該問題?可以重現的問題會比較好追,不能重現的問題就需要工具的輔助了。
- 重現問題:
- 當我們要重現客戶端問題時,最重要的是要有四個一致性:環境、資料、程式跟結果,否則就算我們在怎麼測試,最後的狀況可能都跟客戶端不相同,改好我們的問題,不代表也改好了客戶端的問題。
- 修正問題:
- 掌握問題後,接下來當然就是要修正問題囉,要修正問題首先我們需了解程式為何出錯,而不是寫了許多容錯的程式在系統裡,這叫規避錯誤,不叫解決問題。
- 確認排除:
- 要確認問題真的已經被排除,一樣要有幾道手續,一定要回歸重現問題的步驟,讓這些狀況都一致後,問題正確的被排除了,這才算是真的解決了。
問題分類
我們在處理問題時,問題發生的原因分成很多種,有OS、Middleware、Web Container等等層級,每個層級的錯誤都有一些對應的工具可以應用,以下分別陳列:
OS層級
- Process Monitor:
- 取得系統中所有的資源存取內容(含機碼、檔案讀寫…)
- 兄弟工具Process Explorer
- ComputerInfo:取得系統的完整硬體資訊
- 事件檢視器:(可參考我的另一篇文章
Middleware層級
- .net framework
- WinDbg.exe(Memory Dump)
- DbgCLR.exe(CLR Debugger)
Web Container層級
- HTTPERR
- C:\WINDOWS\system32\Logfiles\HTTPERR
- 記錄所有IIS發生的錯誤(錯誤代號對照)
- W3SVC
- C:\WINDOWS\system32\Logfiles\W3SVC
- 記錄所有IIS的request/response
- 透過Log Parser等相關工具來進行Log分析
PS.此兩檔案的時間為格林威治時間,以台灣為例需加上8小時才是當地時間
網路環境層級
- Netmon
- 監控Client/Server端的封包,微軟的技術支援單位很愛用的工具,可分析Client/Server兩端的封包傳送是否正常
- HttpWatch
- 取得Client端request/response的結果,最簡單,功能最精簡
- Fiddler
- Request/response的細步結果,含header/cookie內容,應用普遍,VS的自動測試專案可以吃Fiddler的執行結果,做auto run。
- NetLimiter
- 可針對單一Process監控流量
資料庫層級
- SQL Profiler
- 監控所有的SQL指令
- Database EngineTuning Advisor
- 進行指令分析,常用在建議索引
- SQLServer執行計畫
- 分析SQL語句中耗費的成本與時間,可透過成本分析來逐漸改善我們的SQL指令
- Performance Dashboard Reports
- 針對SQL運行的整體性建議(CPU/IO/Blocking..)
其實有好多圖我沒貼出來,因為實在太多了,這邊只提出工具的名稱,後續若有機會再做進階說明,如果有人對某一段有興趣的,我也可以舉我實際應用的例子來說明該工具的用途。
游舒帆 (gipi) 探索原力Co-founder,曾任TutorABC協理與鼎新電腦總監,並曾獲選兩屆微軟最有價值專家 ( MVP ),離開職場後創辦探索原力,致力於協助青少年培養面對未來的能力。認為教育與組織育才其實息息相關,都是在為未來儲備能量,2018年起成立為期一年的專題課程《職涯躍升的關鍵24堂課》,為培養台灣未來的領袖而努力。 |