Russian Qt Forum

Qt => Установка, сборка, отладка, тестирование => Тема начата: Boris от Март 05, 2008, 10:00



Название: Отладка в Eclipse (QString)
Отправлено: Boris от Март 05, 2008, 10:00
Eclipse 3.3.1 QTIntegration 101 MinGW
Во время отладки хочу увидеть какая строка в QString

пробовал сделать
Код:
QString str;
....
char *test = str.toAscii().data();

Не помогает мне нужно увидеть не коды а строку прочесть.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Пантер от Март 05, 2008, 12:37
А если вывести ее через мессагу?
QMessageBox::warning(this,"",qsString);


Название: Re: Отладка в Eclipse (QString)
Отправлено: pastor от Март 05, 2008, 13:17
Код:
char *test = str.toAscii().data();

Так делать нельзя, т.к. в test будет содержаться невалидный указаьель на данные


По теме: А почему бы не использовать qDebug?


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 05, 2008, 15:27
Цитировать
По теме: А почему бы не использовать qDebug?

Да пробовал консоль Eclips'a ни в какую не хочет показывать русские буковки (вместо них кракозяблы) исходники в cp1251


Название: Re: Отладка в Eclipse (QString)
Отправлено: Пантер от Март 05, 2008, 19:05
Поиграй с кодировками. :)
Про tr не забудь.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 06, 2008, 08:25
Дык играю, второй день уже пошел - немогу подобрать.
Код:
        QTextCodec *outcodec = QTextCodec::codecForName("CP866");//Пробовал UTF-8, CP1251
QTextCodec *incodec = QTextCodec::codecForName("CP1251");
QTextCodec::setCodecForTr(incodec);
QString j = tr("Тест");
QString str = tr("Проба") + j;
qDebug() << tr("Проба_2");//Кракозяблы
qDebug() << outcodec->fromUnicode(str).constData();//Кракозяблы
qDebug() << tr("Текст");//Кракозяблы
И так пробовал
Код:
qDebug( QString::fromLocal8Bit( str ) );
qDebug( QString::fromAscii( str ) );
qDebug( QString::fromUtf8( str ) );
qDebug( "Текст" );
//тоже везде кракозяблы

У-У-У Кто нибудь добился того чтобы qDebug() заработал в Eclipse с русскими буковками?


Название: Re: Отладка в Eclipse (QString)
Отправлено: Alex03 от Март 06, 2008, 08:59
А так?
Код:
qDebug( str.toLocal8Bit());


Название: Re: Отладка в Eclipse (QString)
Отправлено: Tonal от Март 06, 2008, 11:15
Переводи в char* а его выдавай в qDebug.
Для перевода в char* пробуй CP866, CP1251 или UTF-8 - одно, какое-то должно сработать.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 06, 2008, 11:41
Цитировать
А так?
qDebug( str.toLocal8Bit());

И toAnsii() пробовал ни але.  :'( С char'ом тоже игрался, у меня смутные сомнения что там как-то Eclipse настроить нужно... :-\
Может я что-то конечно пропустил.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Пантер от Март 06, 2008, 12:29
А если запустить в простой консоли? Там нужно в 866 переводить. Если все будет нормально, то значит нужно Eclipse настраивать.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 06, 2008, 13:41
Да в консоли с 866 все нормально. Не понятно что нужно Eclips'у и где это нужно у него есть.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Пантер от Март 06, 2008, 18:12
Тогда лазь в настройках. Там есть выбор кодировки для редактора, может быть и для консоли есть.


Название: Re: Отладка в Eclipse (QString)
Отправлено: uriel от Март 06, 2008, 19:03
Eclipse работает под Linux'ом, вся система на юникоде.
Код:
QString str = QString::fromUtf8("Проверка");
qDebug() << str;
Работает отлично. Ничего отдельно не настраивал.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 07, 2008, 08:17
WinXP SP2 Eclipse 3.3.1
У меня стоит
QTextCodec::setCodecForCStrings( QTextCodec::codecForName("CP1251") );

Код:
QString str = QString::fromUtf8("Проверка");//не помогает
char *test = str.toAscii().data();
qDebug() << str.fromAscii(test);//то же самое


Название: Re: Отладка в Eclipse (QString)
Отправлено: uriel от Март 07, 2008, 18:55
А если вот так?
Код:
QString str = QString::fromLocal8Bit ("Проверка");
qDebug() << str;


Название: Re: Отладка в Eclipse (QString)
Отправлено: Boris от Март 08, 2008, 09:56
Нет никак я даже исходники на UTF-8 (у меня СР1251 была) менял. Видимо придется месаджбоксами отлаживать. Всем спасибо.


Название: Re: Отладка в Eclipse (QString)
Отправлено: juvf от Апрель 22, 2008, 13:37
Такая же проблема. Как надлюдать переменные типа QString при отладке?
Есть слух типа нужно cdt 4 и более, но этот плагин не ставится. Требует org.eclipse.core.filesystem_1.1. А его ни как не могу прикрутить к эклипсу ((. Мож кто ставил org.eclipse.core.filesystem_1.1, как и от куда его поставить?

До этого работал в KDevelop - все было нормалоьно до тех пор, пока приложение не стало многопоточным. При многопоточности отладка в KDevelop благополучно загнулась.

p.s. eclipse 3.2 (под freebsd 6.2 + kde3.5), cdt 3.1.2 + интегратор от trolltech.



Название: Re: Отладка в Eclipse (QString)
Отправлено: Tonal от Апрель 23, 2008, 07:27
Насколько я в курсе, что KDevelopб что Eclipse своего отладчика не имеют, а работают через тот же gdb.
Хотя может в Eclipse это сделано более хорошо...

Я бы посоветовал плюнуть на IDE и разобраться с самим gdb - в любом случае возможностей при прямой работе с ним больше, а тормозов сильно меньше. :)

P.S. Да, к gdb где-то был набор скриптиков, для нормального отображения всяких Qt-шных классов. Поищи. :)


Название: Re: Отладка в Eclipse (QString)
Отправлено: Sergeich от Апрель 23, 2008, 13:59
P.S. Да, к gdb где-то был набор скриптиков, для нормального отображения всяких Qt-шных классов. Поищи. :)
Спасибо за наводку. Часто приходится юзать gdb из консоли, и всегда бесило, что нельзя посмотреть значение QString. Сцыла: http://silmor.de/46


Название: Re: Отладка в Eclipse (QString)
Отправлено: juvf от Апрель 23, 2008, 14:55
Цитировать
P.S. Да, к gdb где-то был набор скриптиков, для нормального отображения всяких Qt-шных классов. Поищи.

Цитировать
Сцыла: http://silmor.de/46

ага, спасибо. Тока это решение проблемы с одним класом Qt. Для других придется писать аналогичные скрипты.

p.s. Поставил QDevelop. Вполне даже не плохая IDE (учитывае вес исходника, меньше 1 Мб против ~80 Мб эклипса). Там QString в отладчике показывает нормальоно. Даже на русском. Но меня по другим причеинам не устроил QDevelop.


Название: Re: Отладка в Eclipse (QString)
Отправлено: QCasper от Апрель 25, 2008, 17:48
А как отлаживать плагины? Я вот написал плагин, написал приложение, которое его подгружает, но эклипс, при попытке поставить брейкпойнт на один из исходников плагина, говорит, что файл с таким именем не найден. А если ставлю в файл приложения, то все нормально. В дебаг конфигурации пути к исходникам прописаны. Как же быть?


Название: Re: Отладка в Eclipse (QString)
Отправлено: QCasper от Апрель 26, 2008, 21:20
Неужели никто не сталкивался?


Название: Re: Отладка в Eclipse (QString)
Отправлено: Tonal от Апрель 28, 2008, 07:40
И опять могу посоветовать обратится к gdb - там оно есть.
Что с этим в клипсе - не в курсе.


Название: Re: Отладка в Eclipse (QString)
Отправлено: Sergeich от Апрель 29, 2008, 13:50
А как отлаживать плагины? Я вот написал плагин, написал приложение, которое его подгружает, но эклипс, при попытке поставить брейкпойнт на один из исходников плагина, говорит, что файл с таким именем не найден. А если ставлю в файл приложения, то все нормально. В дебаг конфигурации пути к исходникам прописаны. Как же быть?
Да нормально gdb сырцы к плагинам видит, только брекпоинты надо ставить после того как приложение этот плагин подгрузит.


Название: Re: Отладка в Eclipse (QString)
Отправлено: QCasper от Май 03, 2008, 08:18
А как отлаживать плагины? Я вот написал плагин, написал приложение, которое его подгружает, но эклипс, при попытке поставить брейкпойнт на один из исходников плагина, говорит, что файл с таким именем не найден. А если ставлю в файл приложения, то все нормально. В дебаг конфигурации пути к исходникам прописаны. Как же быть?
Да нормально gdb сырцы к плагинам видит, только брекпоинты надо ставить после того как приложение этот плагин подгрузит.

Да вобщем-то можно и перед, он всеравно там останавливается. Там основная проблема была в том, что после того как выполнение остановилось, и я нажимаю trace into, то стрелочка пошагового выполнения пропадала, и все как-то замирало. Оказалось, что надо просто подождать подольше (секунд 15). Тоже, вообще говоря, странное поведение.