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)似乎不适合我!
有任何想法吗?
我发现的唯一方法是:
call 'operator<<(std::ostream&, myclass&)'(mycout, c)
由于std::cout某些原因gdb不可见,我不得不求助于创建我自己的:
std::ostream mycout(std::cout.rdbuf());
您没有说明有什么理由想要这样做但不会print yourvariable更容易吗?   
如果这是绝对的必须你可以Print在你的类中有一个方法并从中调用,operator<<然后Print从gdb 调用对象上的方法.
请注意,stdout可能在gdb中缓冲,因此除非您以某种方式重定向,否则您将看不到任何输出.
有关此问题,请参阅gdb的邮件存档中的此讨论.
小智 6
您还可以定义如下函数:
define printType
call operator<<(std::ostream&, const $arg0 &)(std::cerr, $arg1)
end
并像这样使用它:
printType ClassX objectOfClassX
| 归档时间: | 
 | 
| 查看次数: | 6417 次 | 
| 最近记录: |