0

我正在调试并想检查变量值发生变化的地方。为此,我尝试通过说诸如 watch 'structure->somefunc.getvalue()' 之类的东西来设置观察点,这不是一个简单的变量(可能是一些调用函数的较大结构的一部分)。当我这样做时,gdb 在当前上下文中说 No symbol 'structure->somefunc ..'。当我在同一目录中执行 grep 时,我得到相同表达式的 3-4 个实例。我错过了什么吗?

4

1 回答 1

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)

于 2011-07-21T02:54:18.677 回答