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 |
在命令编辑框中输入一个问号(?), 可以显示出主要的标准命令和每个命令的简单介绍.
摘自:<软件调试> 张银奎
|