我想监视变量何时减少。我怎么能在GDB中做到这一点?
答案 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