windbg常用命令

来源:互联网 发布:php mysql 事务处理 编辑:程序博客网 时间:2024/06/12 21:34

命令输出到日志

第一步:开启日志记录

.logopen d:\dbglog.txt

第二步:用命令或通过菜单输入调试命令,观察输出结果

kb

第三步:关闭日志记录

.logclose

之后,就可以去查看log文件了,也可以用命令打开.logfile 



查看可执行文件的信息

lmv m virtual
!lmi virtual
vertarget
设置显示格式好看一点 set print pretty on gdb上面这种的


查看断点信息
bl


设置断点信息
有地址bp 
有符号bp virtual!main
有源码找到对应行直接F9


清除断点信息
bc 序号


找到符号地址
x virtual!main


寻找帮助
.hh x 这样可以直接查找相应的文档


查看寄存器的值 
r eax


查看所有寄存器的值
r


修改寄存器的值
r eax=1


查看对应内存页的属性
!address eip 前面有一个感叹号表示扩展功能


列出当前进程中加载的所有dll文件和对应的路径
lmf


显示所有模块详细信息
lmD


可以查看任意一个dll的详细信息
lmvm winhafnt


显示内存内容 Display
dd 地址


反汇编 Unassemble 把源代码翻译成汇编输出
u main
u 地址
uf main
uf test!main


查看局部变量
dv p1


查看全部的局部变量 Display Local Variables
dv


修改内存内容 Enter Values
ed 地址 值


寻找内存
s (Search Memory)


每个线程的消耗的时间
!runaway


显示线程的信息
~


列出当前进程中的所有线程的详细信息
~*


列出所有线程的堆栈 []
~*kb
~*kc 干净清爽


显示当前线程的堆栈 [Display Stack Backtrace]
k
kn 栈的编号显示出来
kb显示堆栈桢地址,返回地址,参数,函数名等
kv增加了函数调用约定等信


查找符号的二进制地址如下
x virtual!main
x argc
就是符号的地址,而不是符号的值


切换帧
.frame 0
.frame 1


查看当前局部变量
在当前帧下面x,dv


打印变量的类型
dt var
dt var -b -r
dt testApp!g_appInstance 表示显示testApp里全局变量g_appInstance的内存布局




对内存访问设置断点 这个是硬件断点
ba 
break on access


清屏
.cls


单步执行一条汇编指令并显示所有寄存器的状态
P step


死锁
!locks


获取整个进程或者某一个handle的详细信息
!handle


设置符号文件路径
SRV*d:\symbols* http://msdl.microsoft.com/download/symbols
之后进行.reload


显示临界区
!cs 


针对某线程设置断点,只要在命令前加~线程号:
比如 ~0 bp 0x441242, 表示0号线程执行到地址0x441242时中断


No runnable debuggees error in 'p'


终止一个很长时间没有完成的命令
Ctrl+Break


通过n命令查看和设置当前进制




单步调试


    g 继续运行(go), 热键F5


    t 单步越过(step over), 热键F10


    p 单步进入(step into), 热键F11


重新启动
.restart





0 0
原创粉丝点击