Windbg是.NET高級調試領域中不可或缺的一個工具和利器,也是日常我們分析解決問題的必備。準備近期寫2篇精華文章,集中給大家分享一下如果通過Windbg進行.NET高級調試。

今天我們來一篇入門的文章。首先,Windbg是什麼?

Windows Debugger,簡稱WinDbg,.NET 最強分析調試利器。它可以用來:

  • 調試內核模式和用戶模式代碼
  • 分析Crash dump
  • 分析代碼執行時 CPU 寄存器信息

我們可以通過WinDbg調試以下具體問題:

  • 線程阻塞
  • 內存泄露
  • 分析查詢運行時線程堆棧和變量
  • 分析進程Crash原因
  • 分析消耗CPU原因
  • 查看並調試CLR異常

那麼,首先我們先進行Windbg下載安裝、配置。

一、下載安裝WinDbg,配置調試環境

1. 推薦下載鏈接

https://raw.githubusercontent.com/EasyDarwin/Tools/master/Windbg_x86_x64/dbg_amd64.msi

或者從Windows Store下載 WingDbg Preview版本

下載後一步一步安裝即可

2. 配置調試符號

大家會問一個問題:爲什麼要配置調試符號?

若要使用 WinDbg 提供的所有高級功能,必須加載適當的符號:比如說我們可以調試、查看.NET CLR程序堆棧,此時要加載對應的調試符號。

微軟提供了統一的調試服務服務器地址:

http://msdl.microsoft.com/download/symbols,將這個地址提供的調試符號,下載緩存到本地,Windbg調試的時候可以用上。
srv*c:\symcache*http://msdl.microsoft.com/download/symbols;c:\symcache

3. 下載並使用WinDbg調試器擴展

Windbg調試器擴展是Windbg調試的精華和核心,可以這麼說,掌握各類Windbg調試器擴展,你就掌握了各類調試技能。

默認情況下,WinDbg的調試指令是有限的,通過一些WinDbg調試器擴展,可以方便我們進行.NET 程序調試

 SOS調試擴展: 隨着.NET Framework安裝,可以直接加載:  .load sos clr

SOS這個dll在哪裏呢(分32位和64位)?

4.0, 32-bit –> C:\Windows\Microsoft.NET\Framework\v4.0.30319

4.0, 64-bit –> C:\Windows\Microsoft.NET\Framework64\v4.0.30319

  MEX調試擴展:This extension is widely used by Microsoft Support Engineers in troubleshooting process applications

下載地址: https://www.microsoft.com/en-us/download/details.aspx?id=53304

下載完成後,將32/64位的Mex.dll 拷貝到windbg安裝目錄中

例如:C:\Program Files\Debugging Tools for Windows (x64)\Mex.dll

詳細使用說明: https://github.com/REhints/WinDbg/tree/master/MEX

下載、安裝、配置完成Windbg之後,接下來我們瞭解一下一些基本的調試命令。

二、基本的WinDbg調試指令

1. WinDbg自帶的調試指令

更多指令,可以查看一下鏈接:

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/getting-started-with-windbg

2. SOS調試擴展常用的調試指令

3. Mex調試擴展常用的調試指令

   更多Mex調試指令,可以查看鏈接: https://github.com/REhints/WinDbg/tree/master/MEX

以上是整個Windbg調試入門篇的介紹,希望大家能夠掌握,下一篇我們將通過一些具體的案例,示意各個指令的使用場景。

周國慶

2020/6/27

相關文章