Использовать С++ std:: cout в lldb
Я пытаюсь вызвать std::cout
внутри lldb в проекте Xcode 5 С++. Мой проект имеет строку #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;
.
Ответы
Ответ 1
возможно, вы можете сделать это по-другому:
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
Ответ 2
вы не можете использовать std:: cout в командной строке, поскольку вы не можете WATCH
его в ANY
Debuger, но вы можете объявить ссылку на него следующим образом:
std::ostream& os = std::cout;
чтобы вы могли выполнить команду expr os << "ok"
в lldb.
вот результат выполнения моего mac:
http://i.stack.imgur.com/lHvfa.jpg
надеюсь, что это будет полезно
Ответ 3
Я не уверен, что это дуп, но я верю, что ответ от Джима Ингама в
Оценка выражения с перегруженными операторами в С++ lldb
вероятно, очень важно для проблемы, которую вы видите здесь.