【问题标题】:Cannot set watchpoint in GDB无法在 GDB 中设置观察点
【发布时间】:2011-07-21 10:55:20
【问题描述】:

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

【问题讨论】:

    标签: debugging gdb watchpoint


    【解决方案1】:

    我错过了什么吗?

    是的,您似乎至少遗漏了几件事:

    • 表达式structure->somefunc.getvalue() 没有任何作用 感觉。你的意思可能是some_variable->some_field.getvalue()

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

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

    【讨论】:

      猜你喜欢
      • 2011-11-15
      • 2011-03-29
      • 2023-03-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-03
      • 1970-01-01
      相关资源
      最近更新 更多