当前位置: 首页 > news >正文

WinDBG 技巧:设断点命令详解(bp, bu, bm, ba 以及bl, bc, bd, be)

WinDBG 提供了多种设断点的命令:bp, bu, bm, ba

bp 命令是在某个地址下断点, 可以 bp 0x7783FEB 也可以 bp MyApp!SomeFunction 。 对于后者,WinDBG 会自动找到MyApp!SomeFunction 对应的地址并设置断点。 但是使用bp的问题在于:1)当代码修改之后,函数地址改变,该断点仍然保持在相同位置,不一定继续有效; 2)WinDBG 不会把bp断点保存工作空间中 。 所以,我比较喜欢用bu 命令。

bu 命令是针对某个符号下断点。 比如 bu MyApp!SomeFunction 。 在代码被修改之后, 该断点可以随着函数地址改变而自动更新到最新位置。 而且bu 断点会保存在WinDbg工作空间中, 下次启动 Windbg 的时候该断点会自动设置上去。

另外,在模块没有被加载的时候,bp 断点会失败(因为函数地址不存在),而bu 断点则可以成功。 新版的WinDBG中 bp失败后会自动被转成bu 。

bm 命令也是针对符号下断点。 但是它支持匹配表达式。 很多时候你下好几个断点。 比如,把MyClass 所有的成员函数都下断点: bu MyApp!MyClass::* , 或者把所有以CreateWindow开头的函数都下断点: bu user32!CreateWindow*

以上三个命令是对代码下断点, 我们还可以对数据下断点。

ba 命令就是针对数据下断点的命令, 该断点在指定内存被访问时触发。 命令格式为

baAccessSize[地址]

Access 是访问的方式, 比如 e (执行), r (读/写), w (写)

Size 是监控访问的位置的大小,以字节为单位。 值为 1、2或4,还可以是 8(64位机)。

比如要对内存0x0483DFE进行写操作的时候下断点,可以用命令 ba w4 0x0483DFE

这里顺便提以下其他断点命令:

bl 列出所有断点

bc 清除断点

bd 禁用断点

be 启动被bd 命令经用的断点

>> 原创文章的版权属于作者,转载请注明出处和作者信息(http://blog.csdn.net/WinGeek/), 谢谢。 <<

相关文章:

  • Auto Complete -- Typeahead 和DateRangePicker
  • 有多少域名被漏掉了?
  • C# Windows Azure Queue的操作
  • 移动设备管理(MDM)与OMA(OTA)DM协议向导(二)——WAP协议(1)
  • Submit disabled Dropdown
  • Validation failed for one or more entities. See 'EntityValidationErrors' property for more details
  • [Windows编程] 如何判断操作系统是64位还是32位
  • 使用Roslyn动态编译和执行
  • 利用Windows7内置功能管理虚拟磁盘
  • 使用cecil 完成 code injection
  • 善用属性
  • SQLServer任意列之间的聚合
  • [编程技巧] 巧用CPU缓存优化代码:数组 vs. 链表
  • 保存Bitmap到内存流中引发“GDI+中发生一般性错误”
  • Asp.net Mvc使用PagedList分页
  • hexo+github搭建个人博客
  • 10个最佳ES6特性 ES7与ES8的特性
  • axios 和 cookie 的那些事
  • - C#编程大幅提高OUTLOOK的邮件搜索能力!
  • conda常用的命令
  • hadoop集群管理系统搭建规划说明
  • HTTP请求重发
  • Java深入 - 深入理解Java集合
  • js写一个简单的选项卡
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • PHP的Ev教程三(Periodic watcher)
  • Python学习笔记 字符串拼接
  • SQLServer之创建数据库快照
  • Theano - 导数
  • Vue全家桶实现一个Web App
  • yii2中session跨域名的问题
  • 半理解系列--Promise的进化史
  • 计算机常识 - 收藏集 - 掘金
  • 前端技术周刊 2019-02-11 Serverless
  • 如何在GitHub上创建个人博客
  • 使用权重正则化较少模型过拟合
  • 线性表及其算法(java实现)
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 异常机制详解
  • 优秀架构师必须掌握的架构思维
  • 转载:[译] 内容加速黑科技趣谈
  • 《码出高效》学习笔记与书中错误记录
  • 直播平台建设千万不要忘记流媒体服务器的存在 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #我与Java虚拟机的故事#连载16:打开Java世界大门的钥匙
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • %check_box% in rails :coditions={:has_many , :through}
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (六)vue-router+UI组件库
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (十八)SpringBoot之发送QQ邮件
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • .aanva