我有这样的东西:
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/