如何在变量上设置观察点,仅在它减少时中断
How to set watchpoint on a variable, to break only when it decreases
我想监视一个变量何时减少。我怎样才能在 GDB 中做到这一点?
这可以使用观察点、条件和便利变量的组合来完成。
基本思想是在观察点上设置一个条件,该条件仅在值减小时触发。
举个简单的例子,下面是您如何查看变量是否低于某个特定值:
(gdb) watch -location variable if variable < 53
您可以像这样实现一种 "ratchet":
(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
我想监视一个变量何时减少。我怎样才能在 GDB 中做到这一点?
这可以使用观察点、条件和便利变量的组合来完成。
基本思想是在观察点上设置一个条件,该条件仅在值减小时触发。
举个简单的例子,下面是您如何查看变量是否低于某个特定值:
(gdb) watch -location variable if variable < 53
您可以像这样实现一种 "ratchet":
(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