WinDBG的大多數(shù)功能是以命令方式工作的, 本系列將介紹WinDBG的三類命令, 標(biāo)準(zhǔn)命令, 元命令和擴(kuò)展命令.
標(biāo)準(zhǔn)命令
===============
標(biāo)準(zhǔn)命令用來(lái)提供適用于所有調(diào)試目標(biāo)的基本調(diào)試功能.
所有基本命令都是實(shí)現(xiàn)在WinDBG內(nèi)部的, 執(zhí)行這些命令時(shí)不需要加載任何擴(kuò)展模塊. 大多數(shù)標(biāo)準(zhǔn)命令是一兩個(gè)字符或者符號(hào), 只有version等少數(shù)命令除外. 標(biāo)準(zhǔn)命令的第一個(gè)字符是不分大小寫(xiě)的, 第二個(gè)字符可能區(qū)分大小寫(xiě). 迄今為止, WinDBG調(diào)試器共實(shí)現(xiàn)了130多條標(biāo)準(zhǔn)命令, 分為60多個(gè)系列. 為了便于記憶, 可以根據(jù)功能將標(biāo)準(zhǔn)命令歸納為如下18個(gè)子類.
控制調(diào)試目標(biāo)執(zhí)行
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 恢復(fù)運(yùn)行 |
g |
Go |
~123g, ~#g, ~*g |
| 跟蹤執(zhí)行 |
t |
Trace |
|
| 單步執(zhí)行 |
p |
Step |
|
| 追蹤監(jiān)視 |
wt |
Trace and Watch Data |
|
寄存器相關(guān)
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 觀察和修改通用寄存器 |
r |
Registers |
|
| 讀寫(xiě)MSR寄存器 |
rdmsr和wrmsr |
Read MSR and Write MSR |
|
| 設(shè)置寄存器顯示掩碼 |
rm |
Register Mask |
|
IO端口讀寫(xiě)
| 功能 |
命令 |
描述/助記 |
| 讀IO端口 |
ib, iw, id |
Input from port (byte, word, double word) |
| 寫(xiě)IO端口 |
ob, ow, od |
Output to port (byte, word, double word) |
內(nèi)存控制
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 觀察內(nèi)存 |
d系列 |
Display Memory |
d, da, db, dc, dd, dD, df, dp, dq, du, dw, dW, dyb, dyd |
| 編輯內(nèi)存 |
e系列 |
Enter Values |
e, ea, eb, ed, eD, ef, ep, eq, eu, ew, eza, ezu |
| 搜索內(nèi)存 |
s |
Search Memory |
sb, sw, sd, sq, sa, su |
棧
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 觀察棧 |
k系列 |
Display Stack Backtrace |
k, kb, kc, kd, kp, kP, kv |
設(shè)置維護(hù)斷點(diǎn)
| 功能 |
命令 |
描述/助記 |
| 軟件斷點(diǎn) |
bp, bu, bm |
Set Breakpoint, Set Unresolved Breakpoint, Set Symbol Breakpoint |
| 硬件斷點(diǎn) |
ba |
Break on Access |
| 管理斷點(diǎn) |
bl |
Breakpoint List |
| 清除,禁止,重新啟用斷點(diǎn) |
bc, bd, be |
Breakpoint Clear, Breakpoint Disable, Breakpoint Enable |
線程
| 功能 |
命令 |
描述/助記 |
| 顯示控制線程 |
~ |
Thread Status |
進(jìn)程
| 功能 |
命令 |
描述/助記 |
| 顯示進(jìn)程 |
| |
Process Status |
表達(dá)式
| 功能 |
命令 |
描述/助記 |
| 評(píng)估表達(dá)式 |
? |
Evaluate Expression |
| 評(píng)估C++表達(dá)式 |
?? |
Evaluate C++ Expression |
匯編, 反匯編
| 功能 |
命令 |
描述/助記 |
| 匯編 |
a |
Assemble |
| 反匯編 |
u |
Unassemble |
段
| 功能 |
命令 |
描述/助記 |
| 顯示段的選擇子 |
dg |
Display Selector: shows the segment descriptor for the specified selector |
執(zhí)行命令文件
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 運(yùn)行命令腳本文件 |
$ |
Run Script File |
$<, $><, $$<, $$><, $$>a< |
配置命令
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 異常發(fā)生或者某事件發(fā)生時(shí)debuger的處理方式 |
sx系列 |
Set Exceptions |
sx, sxd, sxe, sxi, sxn, sxr, sx- |
| 啟用與禁止靜默模式 |
sq |
Set Quiet Mode |
sq sq{e|d} |
| 設(shè)置內(nèi)核debugging選項(xiàng) |
so |
Set Kernel Debugging Options |
|
| 設(shè)置符號(hào)后綴 |
ss |
Set Symbol Suffix |
ss [a|w|n] |
版本與系統(tǒng)信息
| 功能 |
命令 |
描述/助記 |
| 顯示調(diào)試器和調(diào)試目標(biāo)版本 |
version |
Show Debugger Version |
| 顯示調(diào)試目標(biāo)所在系統(tǒng)的信息 |
vertarget |
Show Target Computer Version |
檢查符號(hào)
| 功能 |
命令 |
描述/助記 |
| 檢查符號(hào) |
x |
Examine Symbols |
源程序
| 功能 |
命令 |
描述/助記 |
補(bǔ)充信息 |
| 控制和顯示源程序 |
ls系列 |
List Source Lines |
ls, lsa, lsp, lsc, lsf |
調(diào)試符號(hào)
| 功能 |
命令 |
描述/助記 |
| 加載調(diào)試符號(hào) |
ld |
Load Symbols |
| 搜索相鄰符號(hào) |
ln |
List Nearest Symbols |
| 顯示模塊列表 |
lm |
List Loaded Modules |
調(diào)試會(huì)話
| 功能 |
命令 |
描述/助記 |
| 結(jié)束調(diào)試會(huì)話 |
q |
Quit |
| 結(jié)束遠(yuǎn)程調(diào)試 |
qq |
Quit |
| 結(jié)束調(diào)試會(huì)話并分離調(diào)試目標(biāo) |
qd |
Quit and Detach |
在命令編輯框中輸入一個(gè)問(wèn)號(hào)(?), 可以顯示出主要的標(biāo)準(zhǔn)命令和每個(gè)命令的簡(jiǎn)單介紹.
摘自:<軟件調(diào)試> 張銀奎
|