天天看點

使用Windbg調試核心

<a href="http://blog.pfan.cn/xman/44320.html">http://blog.pfan.cn/xman/44320.html</a>

Windbg是微軟開發的免費源碼級調試工具。Windbg可以用于Kernel模式調試和使用者模式調試,還可以調試Dump檔案。

Debugging Tools for Windows 32-bit Version 

Symbol Packages,安裝到D:\Program Files\Symbols 

3.啟動Windbg,File-&gt;Symbol File Path填寫以上Symbols安裝路徑:

D:\Program Files\Symbols

4.File-&gt;Kernel Debug-&gt;Local,在下面執行lkd&gt; !process出現以下錯誤:

NT symbols are incorrect, please fix symbols

       這個可能是D:\Program Files\Symbols\exe\ntoskrnl.pdb破損所緻。

解決方案:将第3步中的Symbol File Path填寫為:

D:\Program Files\Symbols;

SRV*D:\Program Files\Symbols*http://msdl.microsoft.com/download/symbols

按照這樣設定,WinDbg将先從本地檔案夾D:\Program Files\Symbols中查找Symbol,如果找不到,則自動從MS的Symbol

Server上下載下傳所需要的Symbol,并且在本地D:\Program Files\Symbols檔案夾下維持一份拷貝。 

5.核心調試

FileàOpenExecutableà可以選擇一個可執行檔案進行調試;

FileàAttache to a Processà可以選擇一個運作中的程序,并對其進行調試;

FileàKernel DebugàLocalà可以選擇本地核心調試。

一旦連接配接到了核心調試模式中,你可以使用衆多的核心擴充指令(以“!”開頭)來顯示核心資料結構的内容。

6.用核心擴充指令檢視常見核心對象資料結構(每條指令以分号隔開)

(1)程序:lkd&gt; !process [0 0];dt nt!_eprocess;dt

nt!_kprocess;

(2)線程:lkd&gt; !thread;dt nt!_ethread;dt

nt!_kthread;

(3)I/O請求包:lkd&gt;

dt nt!_irp;!irpfind;

(4)常見同步對象:lkd&gt;

dt nt!_kevent;lkd&gt;

dt nt!_kmutant;lkd&gt;

dt nt!_ksemaphore;

(5)作業:lkd&gt; !job;會話(lkd&gt;

!session);記憶體管理(lkd&gt; !vm)的指令等。

顯示核心符号中所包含的類型資訊的核心結構清單àlkd&gt;

dt nt!_*,若需遞歸顯示子結構請使用“-r”開關。在.hh後面添加關鍵字,将顯示該指令的幫助,例如:lkd&gt;.hh

irp。

詳情參考:Debugging Tools For Windows help referenceàDebuggersàDebugger

ReferenceàDebugger Extension Commands。

下圖是核心模式調試顯示I/O完成端口IO_COMPLETION_CONTEXT資料結構和程序控制塊。

有興趣的可以參考以下文章,進一步學習Debugging Tools for Windows.

《Windbg配置和使用基礎》

<a href="http://hi.baidu.com/estellejiang/blog/item/34d308fab249078a9f514638.html">http://hi.baidu.com/estellejiang/blog/item/34d308fab249078a9f514638.html</a>

《使用Windbg調試程式》

<a href="http://hi.baidu.com/cppiod/blog/item/58efaf86eb696d3f67096ec2.html">http://hi.baidu.com/cppiod/blog/item/58efaf86eb696d3f67096ec2.html</a>

《用Windbg調試一個Windows自帶掃雷程式的邏輯bug》

<a href="http://blog.csdn.net/v_jzho/archive/2008/10/03/3014681.aspx">http://blog.csdn.net/v_jzho/archive/2008/10/03/3014681.aspx</a>

《windbg調試執行個體(4)--句柄洩露》

<a href="http://www.cnblogs.com/vivilisa/archive/2009/04/16/1437529.html">http://www.cnblogs.com/vivilisa/archive/2009/04/16/1437529.html</a>

繼續閱讀