GDB呼叫函数 - 如何使用std :: cout作为参数
gdb call function - how to use std::cout as parameter?
我有以下代码:
#include <iostream>
using namespace std;
namespace ns
{
class D
{
int n;
public:
D(int _n):n(_n){}
void dump(ostream &os);
};
};
void
ns::D::dump(ostream &os)
{
os << "n=" << n << std::endl;
}
int main() {
ns::D d(200);
return 0;
}
在GDB中,当我发出命令call d.dump(std::cout)
时,在行return 0;
时,我会得到此GDB错误:
A syntax error in expression, near `cout)'.
任何建议我如何通过GDB调用函数中的" std :: cout"?
[update] 实际上是因为GDB,我使用了7.2;切换到7.11.1后,它可以正常工作。
我正在使用:
GNU gdb (Ubuntu 7.11.1-0ubuntu1~16.04) 7.11.1
我很快意识到,调试器根本没有看到std::cout
符号,这可能是因为它在您的代码中没有使用。因此,我更改了主要功能,如下所示:
int main() {
std::cout << "Hello world!" << std::endl;
ns::D d(200);
return 0;
}
现在,当我运行调试器时,我可以无问题执行您的呼叫:
(gdb) break main
Breakpoint 1 at 0x400955: file main.cpp, line 24.
(gdb) run
Starting program: gdb_cout/main
Breakpoint 1, main () at main.cpp:24
24 int main() {
(gdb) next
25 std::cout << "Hello world!" << std::endl;
(gdb) next
Hello world!
26 ns::D d(200);
(gdb) next
27 return 0;
(gdb) call d.dump(std::cout)
n=200
(gdb)
相关文章:
- 如何反转整数参数包
- 使用C++库在Android项目中修改gradle中的cmake参数,用于插入指令的测试
- 如何使用默认参数等选择模板专业化
- 模板参数替换失败,并且未完成隐式转换
- 具有默认模板参数的多态类的模板推导失败
- C++ cout 不打印所有参数
- 将参数传递给成员函数,就像使用 std::cout 一样
- 什么是clang 选项,以便在GDB中我可以使用std :: cout作为函数参数
- GDB呼叫函数 - 如何使用std :: cout作为参数
- 我需要输入课程的参数,我应该在哪里做?同样,为什么COUT被认为是在课堂上使用的不良实践
- 为什么在语句"std::cout << std::endl;"中使用时需要命名空间限定,给定依赖于参数的查找?
- printf() 是否将其参数转换为像 cout 这样的字符串
- C++具有 std::cout 格式的可变数量的参数
- 忽略了 NULL 之后的 std::cout 中的参数
- 打印f 和 cout 仅打印参数 cpp 的第一个字符
- 带有 char* 参数的 cout <<打印字符串,而不是指针值
- Std::cout函数作为参数
- 使用std::cout对参数求值的顺序
- 对象cout如何打印多个参数
- 重载<<运算符并将参数传递给 std::cout