无法在GDB中设置观察点

时间:2011-07-21 01:09:36

标签: debugging gdb watchpoint

我正在进行调试,并希望检查变量值变化的位置。为此,我试着设置一个观察点,通过说像'watch-> somefunc.getvalue()'这样的东西并不简单变量(可能是调用函数的更大结构的某些部分)。当我这样做时,gdb在当前上下文中说没有符号'structure-> somefunc ..'。当我在同一目录中执行grep时,我得到3-4个实例同样的表达。我错过了什么?

1 个答案:

答案 0 :(得分:1)

  

我错过了什么吗?

是的,你似乎至少缺少一些东西:

  • 表达式structure->somefunc.getvalue()没有任何内容 感。你可能意味着some_variable->some_field.getvalue()

  • 要使该表达式有效,您必须处于some_variable存在的上下文中。 some_variablegrep输出中显示的事实并不意味着GDB可以当前评估它。当在正确的上下文中停止程序时,它可能能够评估它。

  • getvalue()的返回值上设置观察点是没有意义的(也是不可能的)。只有在您可以指定要观看的内存位置时,观察点才有意义。如果(很可能)getvalue()返回this->m_value之类的内容,那么您真正想要的是在*(&some_variable->some_field.m_value)上设置观察点。