GDB WatchPoint与CatchPoint

1、GDB WatchPoint
用来观察某个表达式(变量也是一种表达式)的值是否有变化了,如果有变化,马上停住程序

我们有下面的几种方法来设置观察点:
1.1、watch <expr>

当表达式(变量)expr值有变化时,停住程序

1.2、rwatch <expr>
当表达式(变量)expr被读时,停住程序

1.3、awatch <expr>
当表达式(变量)expr的值被读或被写时,停住程序

1.4、info watchpoints
列出当前所设置了的所有观察点。

参考资料: GDB catch命令:建立捕捉断点

2、GDB CatchPoint
用来补捉程序运行时的一些事件。如:载入共享库(动态链接库)或是C++的异常

设置捕捉点的格式为:
2.1、catch <event>
当event发生时,停住程序。常用 catch throw,即当C++程序抛出异常时停住程序

                                  表 1 常见的 event 事件  
event 事件含 义
throw [exception]当程序中抛出 exception 指定类型异常时,程序停止执行。如果不指定异常类型(即省略 exception),则表示只要程序发生异常,程序就停止执行
catch [exception]当程序中捕获到 exception 异常时,程序停止执行。exception 参数也可以省略,表示无论程序中捕获到哪种异常,程序都暂停执行。
load [regexp] unload [regexp]其中,regexp 表示目标动态库的名称,load 命令表示当 regexp 动态库加载时程序停止执行;unload 命令表示当 regexp 动态库被卸载时,程序暂停执行。regexp 参数也可以省略,此时只要程序中某一动态库被加载或卸载,程序就会暂停执行。

2.2、tcatch <event>
只设置一次捕捉点,当程序停住以后,应点被自动删除

3、总结:

1、通过GDB WatchPoint来观察指定变量、表达式;
2、通过GDB CatchPoint的catch throw来捕获程序抛出异常时的调用栈

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值