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