如何在变量上设置观察点,仅在变量减少时才会中断

时间:2015-08-06 03:22:39

标签: debugging gdb

我想监视变量何时减少。我怎么能在GDB中做到这一点?

1 个答案:

答案 0 :(得分:1)

这可以使用观察点,条件和便利变量的组合来完成。

基本思想是在观察点上设置一个仅在值减小时触发的条件。

作为一个简单的例子,下面是你如何看到变量是否低于某个特定值:

(gdb) watch -location variable if variable < 53

你可以像这样实现一种“棘轮”:

(gdb) set $save = variable
(gdb) watch -location variable if variable < $save && ($save = variable, 1)

当变量低于保存的值时,这应该会中断。

然而,这与减少破坏不同。为此,您必须观察变量的所有更改。一种方法是:

(gdb) set $save = variable
(gdb) watch -location variable if $copy = $save, $save = variable, variable < $copy