<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->Symbol File Path填寫以上Symbols安裝路徑:
D:\Program Files\Symbols
4.File->Kernel Debug->Local,在下面執行lkd> !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> !process [0 0];dt nt!_eprocess;dt
nt!_kprocess;
(2)線程:lkd> !thread;dt nt!_ethread;dt
nt!_kthread;
(3)I/O請求包:lkd>
dt nt!_irp;!irpfind;
(4)常見同步對象:lkd>
dt nt!_kevent;lkd>
dt nt!_kmutant;lkd>
dt nt!_ksemaphore;
(5)作業:lkd> !job;會話(lkd>
!session);記憶體管理(lkd> !vm)的指令等。
顯示核心符号中所包含的類型資訊的核心結構清單àlkd>
dt nt!_*,若需遞歸顯示子結構請使用“-r”開關。在.hh後面添加關鍵字,将顯示該指令的幫助,例如:lkd>.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>