天天看點

6步確定 windbg 成功調試 .net

1、windbg 的版本一緻。

2、檢查 CLR的版本要一緻。

   檢查 mscorwks.dll (#2.0) 或 clr.dll (#4.0) 版本正确。使用 lm vm mscorwks 或 lm vm clr 檢查,看輸出内容中是否有 # M C 之類的,存在則表示檔案不比對

3、加載了正确的擴充指令。

   檢查加載的擴充是否為: psscor2.dll (#2.0)      psscor4.dll (#4.0) 。使用指令 !threads 檢查擴充是否正常工作。

   psscor2 下載下傳位址: http://www.microsoft.com/download/en/details.aspx?id=1073

   psscor4 下載下傳位址: http://www.microsoft.com/download/en/details.aspx?id=21255

4、如果步驟3 執行失敗,則檢查 和CLR版本相同的DAC(Data Access Component)是否正确。

   将dump機器上(或其他機器上同版本的 mscordacwks.dll)拷貝到windbg.exe 同目錄,并命名為:mscordacwks_xPP_xPP_2.0.50727.vvvv.dll,

5、确認 CLR  版本。

   使用 lm vm mscorwks (#2.0) 或 lm vm clr (#4.0) 來确認 CLR 版本。

6、順帶說一個非常強大的調試托管代碼的擴充指令。

========================================================================

總結:

1、上述 6步 是”確定windb成功調試.net“的前提,每一步都非常重要。切記,切記!

2、關于CLR的版本清單,外國大牛就是總結的好,友善查找,應該為.net調試常備之利器。

3、除了 sos.dll 進行托管調試外,還有2款瑞士軍刀可用: psscor2 / sosex

繼續閱讀