我正在进行调试,并希望检查变量值变化的位置。为此,我试着设置一个观察点,通过说像'watch-> somefunc.getvalue()'这样的东西并不简单变量(可能是调用函数的更大结构的某些部分)。当我这样做时,gdb在当前上下文中说没有符号'structure-> somefunc ..'。当我在同一目录中执行grep时,我得到3-4个实例同样的表达。我错过了什么?
答案 0 :(得分:1)
我错过了什么吗?
是的,你似乎至少缺少一些东西:
表达式structure->somefunc.getvalue()
没有任何内容
感。你可能意味着some_variable->some_field.getvalue()
要使该表达式有效,您必须处于some_variable
存在的上下文中。 some_variable
在grep
输出中显示的事实并不意味着GDB可以当前评估它。当在正确的上下文中停止程序时,它可能能够评估它。
在getvalue()
的返回值上设置观察点是没有意义的(也是不可能的)。只有在您可以指定要观看的内存位置时,观察点才有意义。如果(很可能)getvalue()
返回this->m_value
之类的内容,那么您真正想要的是在*(&some_variable->some_field.m_value)
上设置观察点。