在lldb中使用C++ std :: cout

Dan*_*den 12 c++ lldb xcode5

我试图std::cout在Xcode 5 C++项目中调用lldb.我的项目有一个#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
Run Code Online (Sandbox Code Playgroud)

对于那些感兴趣的人,我试图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;
}
Run Code Online (Sandbox Code Playgroud)

断点return 0;在线.

小智 4

也许你可以用另一种方式做到这一点:

1、创建一个dylib,导入所需的所有头文件,编写如下函数:

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

在桌面(或其他较短的路径)中构建为 libdbghelper.dylib 。

2、将其加载到您的调试项目中:

(lldb) target modules add /Users/yourName/Desktop/libdbghelper.dylib
Run Code Online (Sandbox Code Playgroud)

3、然后就可以用命令log了

(lldb)expr mylog((const MyObject&)myobj);
Run Code Online (Sandbox Code Playgroud)

这是我的 mac 中的运行结果: https ://i.stack.imgur.com/LBBLJ.jpg

dylib的代码如下: https://i.stack.imgur.com/H1Q9​​v.jpg