4

假设我定义了一个var在主函数中命名的变量。我为它设置了一个观察点。然后我输入另一个名为func(). 此时,可能会删除观察点,因此我无法访问该变量。有什么方法可以让您随时保持观察点?

另外,我知道我可以使用诸如print main::var打印出变量值之类的语法。但这还不够。有什么好主意吗?

4

1 回答 1

8

gdb 的一个奇怪之处在于它watch试图尊重表达式所有组成部分的范围。因此,如果您watch var, 和var超出范围,则观察点将被删除。这也适用于更复杂的表达式的元素,例如watch a + b.

当然,这是有道理的,并且在某种程度上很酷——但它很少是你真正想要的。根据我的经验,不关心范围而只想看一些记忆是很正常的。

为此,请传递-locationwatch命令。这将做您通常想做的事情——只需要表达式引用的内存。所以,watch -location var

于 2015-06-21T00:41:35.100 回答