首页 > 数据库技术 > 详细

在WinDBG中设置断点的命令

时间:2015-03-24 16:06:17      阅读:538      评论:0      收藏:0      [点我收藏+]

命令

==========

~0 bp 02sample!KBTest::Fibonacci_stdcall "r esp"

在零号线程上的KBTest类的Fibonacci_stdcall函数上设置断点, 并且在触发断点时执行"r esp"命令.

 

bl

列出所有已经设置了的断点

 

bc *

清除所有断点

 

bp 02sample!KBTest::Fibonacci_stdcall “r esp;g”

在所有线程上设置断点, 并且在触发断点时执行"resp;g"两条命令.

 

bm 02sample!*kbtest*

命令bm可以在参数中指定一个符号模式, 这样在所有与这个符号匹配的地址上都将设置一个断点. 上面的命令使用bm在KBTest的所有方法上设置断点.

 

bu ole32!CoInitializeEx

Windows操作系统会在必要时加载动态链接库, 而我们经常需要在一个还没有被加载的模块上设置断点. 命令bu可以用来设置一个延迟断点, 只有当这个断点所在的模块被加载时, 延迟断点才能成为一个真正的断点.  上面的命令将在DCOM的初始化函数中设置一个延迟断点.

 

内存访问断点

============

内存访问断点的名令为ba, 即Break on Access.

用户态的命令语法:

[~Thread] ba[ID] Access Size [Options] [Address [Passes]] ["CommandString"]

举例:

ba w4 gGlobal+0

上面命令设置了一个断点, 使处理器监视从gGlobal起始地址开始的4个字的内的写入操作, 一旦发现有试图修改这个地址的操作, 立即进入断点.

 

条件断点

=============

在每个断点上都可以设置一个命令, 每当调试目标处罚这个断点时, 调试器都会执行这个命令. 通过这个功能我们可以创建非常有用的条件断点.

我们经常会遇到某个函数只有在某种条件下才会发生故障, 因此我们希望程序在函数某条件下发生故障时才停下来, 以进行进一步的分析. 这可以通过有条件地执行g命令来实现. 如果函数执行后没有检测到错误条件的话, 就继续执行. 否则就停下来.

bp 02sample!KBTest::Fibonacci_stdcall “gu; .if(eax!=1) {g}”

上面的命令中, 我们配置了一个断点, 断在KBTest类的Fibonacci_stdcall函数开始的时候, 然后立即执行命令gu(即Go Up, 目标会开始执行直到当前函数结束), 函数执行结束后检测函数的返回值(eax), 如果不是1, 则继续执行(g), 否则, 进入断点.

 

在WinDBG中设置断点的命令

原文:http://www.cnblogs.com/WDPrisonBreak/p/4363039.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!