首页 > Windows驱动开发 > WinDBG调试断点命令详解

WinDBG调试断点命令详解

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命令就是针对数据下断点的命令,该断点在指定内存被访问时触发。命令格式为
ba Access Size [地址]

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

Size是监控访问的位置的大小,以字节为单位。值为1、2或4,还可以是8(64位机)。
比如要对内存0x0483DFE进行写操作的时候下断点,可以用命令 ba w4 0x0483DFE

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

  • bl 列出所有断点
  • bc 清除断点
  • bd 禁用断点
  • be 启动被bd 命令经用的断点

本文属转载,原文链接:http://blog.csdn.net/WinGeek/


觉得文章还不错?点击此处对作者进行打赏!


本文地址: 程序人生 >> WinDBG调试断点命令详解
作者:代码疯子(Wins0n) 本站内容如无声明均属原创,转载请保留作者信息与原文链接,谢谢!


更多



  1. 2010年12月23日12:52 | #1

    学习一下哈

    [回复]

  2. 2010年12月23日20:18 | #2

    又是linux平台的?

    [回复]

  3. 2010年12月23日21:17 | #3

    @C瓜哥
    不是 Win嘛 这个内核级调试工具 O(∩_∩)O~

    [回复]

  4. 2010年12月23日21:17 | #4

    @西风
    呵呵

    [回复]