u命令可根据函数名字搜索函数(例子中是全名):
x命令类似(例子中有*号):
g :运行
q:结束调试会话,同时终止被调试进程的进行
.restart:重启被调试应用
version:显示调试器版本信息和已加载的调试器扩展
.time:显示系统记录的各种时间
.sympath 显示和设置符号搜索路径
.sympath+ 增加符号搜索路径
bl:列出所有断点
bc* 清除所有断点
bc 1 清除1号断点
bc 1 2 5 清除1号、2号、5号断点
be* 启用所有断点
be 1
be 1 2 5
bd*
bd1
bd 1 2 5
bp 0x7c801b00
bp ‘test.cpp:36’//在36行处放置一个断点
bp main//在main函数起始处放置一个断点
bp ‘ConsoleTest.cpp:40’ “j @eax = 0xa3 ‘’; ‘g’”//条件断点 寄存器eax的值为0xa3时断住
bm add_*//匹配add_开头的函数,并在这些函数起始地址处都打上断点
ba w4 0483dfe0//当对0483dfe0地址写操作时停下
#调试执行控制
gH//执行gH命令强制让调试器返回已经处理了这个异常。【Go with Exception Handled】
gN // 【Go with Exception Not Handled】
// 如果没有其他调试器也不处理,最后系统会弹出程序终止对话框。
gu//执行到当前函数完成时停下【go up】
p//单步执行
p 2//2为步进数目
pc//执行到下一个函数调用处停下【step to next call】
pa 7c888888//执行到…地址处停下
t //step into 【trace】
tc//执行到下一个进入点处停下【Trace to Next Call】
ta 7c801b12 // 执行到7c801b12地址处停下 【Trace to Adress】
#查看变量
dt nRet // 查看变量nRet的类型与值
dv // 显示当前函数内所有局部变量,函数参数
dv n* // 显示当前函数内n开头的所有局部变量,函数参数
dv /t /i /V /a|/n|/z
/*****************************************
a = sort by Addr, n = sort by name, z = sort by size
*****************************************/
#调用堆栈
k // 显示当前调用堆栈
kn // 带栈编号显示当前调用堆栈
kb // 打印出前3个函数参数的当前调用堆栈
kb 5 // 只显示最上的5层调用堆栈
.frame // 显示当前栈帧
.frame n // 设置编号n的栈帧为当前栈帧
.frame /r n // 设置编号n的栈帧为当前栈帧 并显示寄存器变量
!uniqstack // 显示所有线程的调用堆栈
#寄存器
r // 显示所有寄存器信息
r eax, edx // 显示eax,edx寄存器信息
r eax=5, edx=6 // 对寄存器eax赋值为5,edx赋值为6
#内存
da /c 5 7c801e02 // 从7c801e02内存处开始,显示5个ascii字符
/*****************************************
d[a| u| b| w| W| d| c| q| f| D] [/c 列数] [地址]
a = ascii chars
u = Unicode chars
b = byte + ascii
w = word (2b)
W = word (2b) + ascii
d = dword (4b)
c = dword (4b) + ascii
q = qword (8b)
f = floating point (single precision - 4b)
D = floating point (double precision - 8b)
*****************************************/
dyb /c 3 7c801e02 // 从7c801e02内存处开始,显示3个byte及二进制
/*****************************************
dy[b | d] … // b = binary+byte d = binary+dword
*****************************************/