[英]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.