c++ - 如何在 GDB 调试器命令行中调用 std::function 句柄

标签 c++ gdb std std-function

我有这样的东西:

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.

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

最佳答案

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

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

这似乎可以避免上述错误。

关于c++ - 如何在 GDB 调试器命令行中调用 std::function 句柄,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59377762/

相关文章:

c++ - 为资源管理器创建右键单击菜单

c++ - 仅由数字 0-9 组成的四字符字符串的排列

c++需要有关如何使用回调函数的帮助

linux - 当应用程序崩溃并且 Qt Creator (GDB) 不提供回溯时该怎么办?

C++ 使用 'tweaked' 比较仿函数排序

C++ 数组输出问题

visual-studio - 如何在 Visual Studio C++ (Express) 中使用 GDB 来调试我的 GCC Makefile 项目?

linux - 程序使用 gdb 运行但不使用 ./ProgramName 运行

c++ - std::vector<bool> 是如何声明/定义的?

c++ - 将容器存储在 boost::variant 中