簡體   English   中英

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

[英]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/H1Q9​​v.jpg

我不是肯定這是一個副本,但我相信Jim Ingham的回答

在c ++ lldb中使用重載運算符計算表達式

可能與你在這里看到的問題高度相關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM