摘要 : 在使用WINDBG做debugging的時候,需要一個好的工具幫助進行數據分析. 最常見的extension包括SOS, PSSCOR. NetExt則是另外一種提供了豐富命令功能的debugging extension. NetExt主要用於Managed Code的分析功能, 對ASP.NET, WCF, WIF有良好的支持, 並且提供了很多常用的分析命令. 它涵蓋了SOS以及PSSCOR的絕大部分命令, 並且提供了更為強大的數據挖掘的功能. 在這個系列里面, 我將一一介紹這個功能.
基礎介紹
NetExt Extension是Microsoft公司的員工開發的一款Debugging Extension. 下載地址為 : http://netext.codeplex.com/
該Extension已經開源, 代碼地址可以在這里下載 : http://netext.codeplex.com/SourceControl/latest
NetExt則是另外一種提供了豐富命令功能的debugging extension. NetExt主要用於Managed Code的分析功能, 對ASP.NET, WCF, WIF有良好的支持, 並且提供了很多常用的分析命令. 它涵蓋了SOS以及PSSCOR的絕大部分命令, 並且提供了更為強大的數據挖掘的功能.
NetExt Extension 並不需要SOS或者PSSCOR等Extension的支持. 它直接使用.NET debugging API. 下面的步驟將展示如何使用這個非常強大的Extension.
前期准備
-  
          首先必須要安裝好32-bit和64-bit版本的WINDBG. 可以從這里下載 : https://msdn.microsoft.com/en-us/library/windows/hardware/ff551063(v=vs.85).aspx
 -  
          從這里下面的連接下載好NetExt : http://netext.codeplex.com/
 -  
          解壓NetExt
 -  
          將對應版本的NetExt拷貝到相應的WINDBG安裝目錄下面.

 
基本操作
下面的步驟簡單的Demo一下如何將NetExt Load到WINDBG中, 並且進行一基本的命令調用.
1. 打開已經安裝好的WINDBG.
2. 在WINDBG打開之后, 點擊菜單欄的 File –>Open Crash Dump...
3. 打開一個實驗用的DMP文件, 點擊 Open.
4. DMP 文件被讀取之后會顯示一些基本的信息.
5. 在CLR Runtime里面, 可以通過檢查mscorwks.dll或者clr.dll的版本信息來確定.NET Framework的版本情況. 具體可以參考這個鏈接 : https://msdn.microsoft.com/library/windows/hardware/ff540665(v=vs.85).aspx
一般來說, .NET 3.5及其以前的版本, CLR Runtime會讀取mscorwks.dll. .NET 4.0及其以后的版本, CLR Runtime會讀取clr.dll.
要檢查這個情況, 可以執行命令 lmv mclr 或者 lmv mmcorwks
如果沒有包含這個DLL的信息, 則說明沒有這個對應的CLR Runtime. 例如以下的命令 lmv mclr, 如果沒有任何顯示, 則表示.NET 4.0沒有被Load進來. 相對的, 則應該是.NET 4.0以上版本.
6. 調用命令 .load netext , 就會把NetExt Extension Load進去. 之后才可以使用這個Extension所提供的命令.
7. NetExt提供了類似於SOS中!do的命令用於dump 一個object的內容. 可以使用!netext.wdo 這個命令.
8. 不僅如此, NetExt提供許多了非常便捷的命令. 例如對於數組的處理. 在NetExt相對SOS有更好的表現. 例如下面的例子, !NetExt.wdo 命令可以直接將一個三維數組展現出來. 這一點SOS以及PSSPOR的展現則計較不如人意.
Sonic Guo







