在gdb中调用operator <<

Ben*_*Ben 16 c++ gdb stream-operators

你如何operator<<(std::ostream &os, const ClassX &x)从gdb内部打电话?

换句话说,如何在gdb中打印对象?

call std::cout<<x或者call operator<<(std::cout, x)似乎不适合我!

有任何想法吗?

Ida*_*n K 9

我发现的唯一方法是:

call 'operator<<(std::ostream&, myclass&)'(mycout, c)
Run Code Online (Sandbox Code Playgroud)

由于std::cout某些原因gdb不可见,我不得不求助于创建我自己的:

std::ostream mycout(std::cout.rdbuf());
Run Code Online (Sandbox Code Playgroud)

您没有说明有什么理由想要这样做但不会print yourvariable更容易吗?

如果这是绝对的必须你可以Print在你的类中有一个方法并从中调用,operator<<然后Print从gdb 调用对象上的方法.

请注意,stdout可能在gdb中缓冲,因此除非您以某种方式重定向,否则您将看不到任何输出.

有关问题,请参阅gdb的邮件存档中的此讨论.


小智 6

您还可以定义如下函数:

define printType
call operator<<(std::ostream&, const $arg0 &)(std::cerr, $arg1)
end
Run Code Online (Sandbox Code Playgroud)

并像这样使用它:

printType ClassX objectOfClassX