【问题标题】:How I can invoke a std::function handle in the GDB debugger command line如何在 GDB 调试器命令行中调用 std::function 句柄
【发布时间】:2019-12-17 15:49:57
【问题描述】:

我有这样的事情:

bool foo(..., std::function<SomeType*> aFuncArg) {
   ...
    stmt1;  // Hit GDB breakpoint here
   ...
}

然后,当我在 Emacs 中的 gdb 中点击上面的断点时,我想这样做:

(gdb) p aFuncArg(argObj)

但这不起作用。我明白了:

Invalid data type for function to be called.

我可以单步执行该功能(通过一些层,但这是另一个主题),但要做到这一点,我必须重新启动调试会话。从 GDB 命令行执行该函数会很方便。

【问题讨论】:

    标签: c++ gdb std std-function


    【解决方案1】:

    而不是(gdb) p aFuncArg(argObj) 您可以显式调用 operator():

    (gdb) p aFuncArg.operator()(argObj)

    这似乎避免了上述错误。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 2010-12-01
      • 2011-10-01
      • 2013-02-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多