[英]Use C++ std::cout in lldb
我试图在Xcode 5 C ++项目中调用lldb中的std::cout
。 我的项目有一个#include <iostream>
线(和我核实,编译std::cout
命令的正常工作),但它并没有 using namespace std;
线。
当我在lldb中的断点处停止时,我无法调用std::cout
:
(lldb) expr std::cout << "test"
error: no member named 'cout' in namespace 'std'
error: 1 errors parsing expression
(lldb) expr cout << "test"
error: use of undeclared identifier 'cout'
error: 1 errors parsing expression
对于那些感兴趣的人,我正在尝试使用std::cout
来打印OpenCV Mat
对象。 但这个细节可能并不重要。
我的lldb版本是lldb-300.2.53
。
根据要求,这是(普通)代码:
#include <iostream>
int main(int argc, const char * argv[])
{
std::cout << "Hello World" << std::endl;
return 0;
}
断点位于return 0;
线。
你不能在命令行中使用std :: cout,因为你无法在ANY
Debuger中WATCH
它,但你可以像这样声明对它的引用:
std::ostream& os = std::cout;
这样你就可以在lldb中执行命令expr os << "ok"
。
这是我的mac中的运行结果:
http://i.stack.imgur.com/lHvfa.jpg
希望它有所帮助
也许你可以用另一种方式做到:
1,创建一个dylib,导入所需的所有头文件,编写如下函数:
void mylog(const MyObject& obj)
{
//assume MyObject is the type you want to view in Debuger
std::cout << obj << std::endl;
}
在桌面(或其他短路径)中构建为libdbghelper.dylib。
2,将其加载到您的调试项目中:
(lldb) target modules add /Users/yourName/Desktop/libdbghelper.dylib
3,然后你可以用命令登录它
(lldb)expr mylog((const MyObject&)myobj);
这是我的mac中的运行结果: http : //i.stack.imgur.com/LBBLJ.jpg
像这样的dylib代码: http : //i.stack.imgur.com/H1Q9v.jpg
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.