[Tool]除錯工具大全

[Other]除錯工具大全

今天在公司舉辦了一場問題排除的經驗分享,課程時間大約三個小時,以下截取部分內容,下面列個大綱提供給各位參考。

問題處理步驟

image

這一段主要說明當我們面對一個問題時,會有哪幾個步驟,其實這是濃縮版,正確的版本是有八個步驟,但這邊我只截取對一般問題處理人員比較重要的幾個點蘭說明:

  • 確認問題:
    • 掌握客戶端發生了什麼錯誤?確保我們理解的錯誤是對的。
    • 確認錯誤的程式,客戶常常會說每支程式都會有相同的錯誤,但釐清後往往不見得是這個樣子,所以確認錯誤的程式也是很重要的。
    • 假設這是一個運行好一陣子的系統,知道整個環境在何時被異動過就很重要了,可能是在某次修改了某個設定後出錯,又或者是版更程式後出錯,這些問題都有助於我們離清真相。(沒錯,真相往往只有一個...)
    • 我們要如何重現該問題?可以重現的問題會比較好追,不能重現的問題就需要工具的輔助了。
  • 重現問題:
    • 當我們要重現客戶端問題時,最重要的是要有四個一致性:環境、資料、程式跟結果,否則就算我們在怎麼測試,最後的狀況可能都跟客戶端不相同,改好我們的問題,不代表也改好了客戶端的問題。
  • 修正問題:
    • 掌握問題後,接下來當然就是要修正問題囉,要修正問題首先我們需了解程式為何出錯,而不是寫了許多容錯的程式在系統裡,這叫規避錯誤,不叫解決問題。
  • 確認排除:
    • 要確認問題真的已經被排除,一樣要有幾道手續,一定要回歸重現問題的步驟,讓這些狀況都一致後,問題正確的被排除了,這才算是真的解決了。

 

問題分類

image 我們在處理問題時,問題發生的原因分成很多種,有OS、Middleware、Web Container等等層級,每個層級的錯誤都有一些對應的工具可以應用,以下分別陳列:

OS層級

  • Process Monitor
    • 取得系統中所有的資源存取內容(含機碼、檔案讀寫…)
    • 兄弟工具Process Explorer
  • ComputerInfo:取得系統的完整硬體資訊
  • 事件檢視器:(可參考我的另一篇文章
    • 應用程式:應用程式所發生的錯誤或警示
    • 系統:硬體/OS/驅動程式等發生的錯誤或警示

 

Middleware層級

 

Web Container層級

  • HTTPERR
  • 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堂課》,為培養台灣未來的領袖而努力。