gdb断点的条件调试

来源:互联网 发布:淘宝网天猫男装外套 编辑:程序博客网 时间:2024/05/11 17:45
如果为一个断点设置一个条件,每当程序到达这个断点的时候都会去判断是否为TRUE,
只有条件为TRUE时才会在断点出停下。断点条件的调试方式与断点断言的调试方式逻辑是想反的,assert是当条件为FALSE时停止,
所一如果在条件调中用断言的话应该是:condition !assert(exp)。
断点的条件调试优越性在同个地方设置多个断点的时候体现的更完美。这样我们就可以控制在
同一个断点,因不同的条件(不同的地方调用)而停止程序,同时你也可以自定义命令行,来

打印所需要的信息。


设置断点的条件方式如下:


1、设置断点的时候加入条件
      break foo if value_a > value_b

2、用condition命令

      condition bnum expression


      例如: condition 6 if value_a == 10
      如果你设置的断点条件,无效会提示:(这于断点的上下文有关,关于断点的上下文会子专门章节阐述)
      No symbol "foo" in current context

3、取消断点条件

     condition bnum


4、断点条件特殊用法
      断点条件的一个特殊用法是,程序只有在到达断点一定次数之后才会停止。这用一个特殊的命令可以实现。
      ignore bnum count

      ignore 设置的触发条件在重新加载程序之后自动删除。

      ignore 2 10  //触发断点10次后,才会停止,每次触发断点count自减1
      如果一个断点及设置了条件,又设置了触发次数,在触发次数count为0之前,是不会判断断点的条件。
      ignore 命令对breakpoint watchpoint catchpoint都有效。
原创粉丝点击