Use C++ std::cout in lldb

c++, lldb, xcode5

Solution

maybe you can do it by another way:

1, create a dylib, import all headers needed, write a function like this:

void mylog(const MyObject& obj)
{ 
   //assume MyObject is the type you want to view in Debuger
   std::cout << obj << std::endl;
}

build as libdbghelper.dylib in your desktop(or another path which is short).

2,load it in to your debugging project:

(lldb) target modules add /Users/yourName/Desktop/libdbghelper.dylib

3,then you can log it with command

(lldb)expr mylog((const MyObject&)myobj);

here is the running result in my mac: https://i.stack.imgur.com/LBBLJ.jpg

the code of dylib like that: https://i.stack.imgur.com/H1Q9v.jpg

Problem

I'm trying to call `std::cout` within lldb in an Xcode 5 C++ project. My project has an `#include <iostream>` line (and I verified that compiled `std::cout` commands work fine), but it does not have a `using namespace std;` line. When I stop at a breakpoint in lldb, I can't call `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 ``` For those interested, I'm trying to use `std::cout` to print an OpenCV `Mat` object. But that detail is probably not important. My lldb version is `lldb-300.2.53`. By request, here's the (trivial) code: ``` #include <iostream> int main(int argc, const char * argv[]) { std::cout << "Hello World" << std::endl; return 0; } ``` The breakpoint is at the `return 0;` line.

Original source

Related problems