假设我在main函数中定义了一个名为var
的变量。我为它设定了观察点。然后我输入另一个名为func()
的函数。此时,可能会删除观察点,因此我无法访问该变量。有什么方法可以随时保持观察点?
另外,我知道我可以使用像print main::var
这样的语法来打印出变量的值。但这还不够。有什么好主意吗?
答案 0 :(得分:4)
gdb的一个奇怪之处在于watch
试图尊重表达式的所有组成部分的范围。因此,如果您watch var
和var
超出范围,则会删除观察点。这也适用于更复杂的表达式的元素,如watch a + b
。
当然,这是有道理的,并且在某种程度上有点酷 - 但它很少是你真正想要的。根据我的经验,更为正常的是,不要关心范围,只想看一些内存。
为此,请将-location
传递给watch
命令。这将执行您更常见的操作 - 只需要表达式引用的内存。所以,watch -location var
。