IIS調試技術之 Debug Diagnostic (調試診斷)


IIS 調試技術之 Debug Diagnostic (調試診斷)

1      概述

1.1  文檔簡介

系統出現錯誤或崩潰,免不了要進行調試。調試能進行的前提是錯誤能重現,但實際上要重現一個錯誤有時比重新設計代碼還困難,所以在錯誤出現之時,能夠及時把系統狀態記錄下來是當務之急,即我們所說的抓取 DUMP (內存轉儲文件)。

如何抓取 DUMP?可以使用 WinDbg 或 Debug Diagnostic Tool 抓取。但是相對而言,使用Debug Diagnostic Tool 抓取更方便,而使用WinDbg分析相對而言更簡單和便捷一些,所以本文我們將介紹①Debug Diagnostic Tool手動和自動抓取過程②WinDbg的分析過程。大家可以在平常的測試過程中將Debug Diagnostic Tool這個工具安裝在服務器上,開啟后設置自動抓取,一定會有你意想不到的收獲的。

 

2      Debug Diagnostic Tool

先介紹一下 Debug Diagnostic Tool,此工具常用的功能主要有兩個:抓取 DUMP 和分析 DUMP。另外,它還可以附加到進程進行調試,或是監視內存和句柄的泄漏。可以進行手動抓取DUMP和根據設置自動抓取DUMP。

下面我們就來看看如何使用 Debug Diagnostic Tool 抓取 DUMP。(工具安裝很簡單,這里不進行介紹)

2.1  手動抓取 DUMP

   這里我們將用應用程序池IIS來進行說明的,我們只要在 Debug Diagnostic Tool 中的 Processes 標簽頁中找到對應的進程名為“w3wp.exe”的進程,然后右鍵選擇“Create Full Userdump”即可。


不過通常情況下,我們會用應用程序池把不同的站點和虛擬目錄分開,這時系統里會有多個名為“w3wp.exe”的進程。我們可以在命令提示符下執行“iisapp”,得到進程 ID 與應用程序池的對應關系,然后在 Debug Diagnostic Tool 中根據進程 ID 選取要抓取 DUMP 的進程。

2.2  自動抓取 DUMP

   要自動抓取 DUMP,就必須設定一些抓取 DUMP 的條件,當系統狀況滿足條件時,Debug Diagnostic Tool 會根據要求抓取指定進程的 DUMP。Debug Diagnostic Tool 的抓取條件分三種:Crash(系統崩潰)、Performance (系統性能資源) 和 Memory and Handle Leak (內存和句柄泄漏)。

第1步:在工具的 Rules 標簽頁,點擊“Add Rule...”按鈕,開始添加一個抓取 DUMP 的規則。由於目前我們系統暴露出來的問題主要是WEB服務器中CPU異常,所以這里我們選擇“Performance”。再選擇“performance counters”,選擇我們要跟蹤的服務器性能計數器,下一步。

第2步:在配置選項中,選擇我們要跟蹤的服務器性能計數器,本次我需要監控的是系統CPU占用率。添加完成后“下一步”。

第3步:比如我們要跟蹤 web application pool (WEB應用程序池) 錯誤,則要在dump target 設置中添加異常設置“web application pool”,將 web application pool name 設置為我們測試的應用程序“ihou.APIServer”。

 第4步:在配置選項中,配置進行一系列的配置,即可完成。

  

第5步:在配置項中在配置“性能監視器的觸發特性”,“Rules”中雙擊上面步驟中所添加的Rules Type,在打開的properties of performance monitor trigger頁中設置DUMP的觸發值,至此所有的設置即可完成。

3      分析DUMP

在工具的 Advanced Analysis 標簽頁,點擊“Add Data Files”按鈕,選擇要進行分析的 DUMP 文件。再選擇可用的分析腳本和數據文件,點擊“Start Analysis”即可開始分析。第一次進行分析,工具會到微軟網站下載調試文件,所以會有點慢。

工具可供使用的分析腳本有兩個:Crash/Hang Analyzers (崩潰/掛起分析) 和 Memory Pressure Analyzers (內存壓力分析)。
Crash/Hang 分析的結果會列出各個線程的執行時間,最后調用的 Function 等,如果有線程阻塞,也會給出警告信息。

內存壓力分析的結果主要是內存使用情況,如內存碎片率、空閑內存大小、保留內存大小、使用內存大小等,每個模塊、線程、堆使用內存的情況都有列出。

這個工具分析 DUMP 的功能不如 WinDbg,具體的分析我們還得用 WinDbg 了。下面我們來介紹一下WinDbg分析功能。

 

3.1  WinDbg分析功能

前面提過Debug Diagnostic Tool也可以對DUMP進行分析,只不過相對而言WinDbg更可用一些,但是個人認為DUMP難搞一些,因為通過很多命令來實現的,很多命令是需要上網查的,大家可以根據自己的喜好進行選擇,這里簡單介紹一下WinDbg的分析功能。

第1步:打開一個dmp文件,點擊WinDbg界面上的【File=>Open Crash Dump...】按鈕,來打開一個dmp文件。

 

第2步:在WinDbg的命令輸入框輸入相應的命令,得到想要發內容信息。(WinDbg命令很多,網上有命令大全,大家可以參考)。

 

4      結束語

我們的關鍵是發現系統缺陷,保存缺陷產生過程中的重要信息,我們可以在日常的測試工作中,時刻關注系統生成的一些重要信息,例如錯誤日志和這些DUMP文件,將這些錯誤信息提供給開發工程師進行分析。從目前來看這個工具對我們很重要,所以建議大家學會使用。這里我只給大家簡單的引入了工具,更多的使用方法和使用技巧大家可以在網上自行學習和試用哦!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM