windbg调式命令备忘录

1.断点

条件断点语法:

常用语法:

0:000> bp Address "j (Condition) 'OptionalCommands'; 'gc' "
 或
0:000> bp Address ".if (Condition) {OptionalCommands} .else {gc}"
两者是等效的。

   条件断点示例:

bp myModule!myfun  "$$对myModule模块中myfun函数下断点, 当函数执行到第0x0000023f次时,中断下来。

 r  $t0=@$t0+1;$$用伪寄存器$t0记录函数执行的次数

 .printf \"====func excutions %d times.\\n\", @$t0;

.echo;

   .if (@$t0 & 0x0`ffffffff) = 0x0`0000023f

{

$$ to do

 }

 .else{

  gc;

}

"    

 设置断点的命令有:bp,bu,bm。bm设置符号断点,可以通过模式匹配一次性设置多个断点。bu可以为一个未加载的符号设置断点,当后面符号加载时会自动解析。pb为指定地址设置地址,当地址表达式无法解析时会自动转为bu断点。

 如,

0:000>  bm myprogram!mem* 
  4: 0040d070 MyProgram!memcpy
  5: 0040c560 MyProgram!memmove

  6: 00408960 MyProgram!memset

全部断点语法:

用户模式断点语法:

[ ~ Threadbp[ ID] [ Options] [ Address [ Passes]] [ " CommandString "
[ ~ Threadbu[ ID] [ Options] [ Address [ Passes]] [ " CommandString "
[ ~ Threadbm [ OptionsSymbolPattern [ Passes] [ " CommandString "]

内核模式断点语法:

bp[ ID] [ Options] [ Address [ Passes]] [ " CommandString "
bu[ ID] [ Options] [ Address [ Passes]] [ " CommandString "
bm [Options] SymbolPattern [Passes] [ "CommandString "]


2. 脚本文件的输入

基本的语法有:

$<FileName

  $><FileName

$$< FileName

$$>< FileName    ------>例如: 0:000>$$><C:\windbgscript.txt

$$>a< FileName  [arg1 arg2 arg3 ...] [; command]     ----->可为脚本提供参数, 脚本中以${$argn}形式使用参数


只有一个$的,FileName前不能留空格;$$的,FileName前面可有空格;含>的表示文件中的命令被看成一个命令块,加载文件后会被执行。

脚本文件:

.echo 1=${$arg1}
.echo 3=${$arg3}
.echo 4=${$arg4}
recx

执行结果:

 0:002> $$>a<F:\windbgscript.txt "asdf" asdf d; redx
1=asdf
3=d
4=${$arg4}
     ----------->因为只提供了三个参数,所以自动参数变量$arg4没有被解析
ecx=00000000
edx=77c7f17d
             

3.

待续。。。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值