crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

AntonTatu
  опции профиля:
сообщение 17.2.2009, 22:57
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Всем привет!

Объясните мне как правильно пользоваться отладчиком:
если объявляю, int Number = 100; то поставив точку останова могу увидеть в отладчике что переменной Number присвоено значение 100
если объявляю QString str = "строка"; то поставив точку останова в отладчике не могу увидеть что str присвоено какое либо значение а почему ? что нужно сделать чтобы в отладчике смотреть значение переменных типа QString ?

PS: с массивами (QVector), то же самое, написал небольшой примерчик, работает а вот в отладчике посмотреть не могу
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
2 страниц V   1 2 >  
Начать новую тему
Ответов (1 - 9)
SABROG
  опции профиля:
сообщение 17.2.2009, 23:11
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


gdb ничего не знает о структуре пользовательских типов. Как ему прикажешь показать строку в такой структуре, если у него есть только ссылка на экземпляр объекта типа MyType? А если это void* указатель?

struct MyType
{
    char *str;
};


Сообщение отредактировал SABROG - 17.2.2009, 23:11
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 17.2.2009, 23:18
Сообщение #3


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(SABROG @ 17.2.2009, 23:11) *
gdb ничего не знает о структуре пользовательских типов. Как ему прикажешь показать строку в такой структуре, если у него есть только ссылка на экземпляр объекта типа MyType? А если это void* указатель?

struct MyType
{
    char *str;
};


причем тут прикажешь, я спрашиваю что в таком случае делать, у меня в проге очень много операций со строками, раньше писал на Delphi, теперь пытаюсь на Qt переписать (есть объективные причины), а как пользоваться отладчиком (очень нужно, без него вообще никак) незнаю... в Delphi было просто, объявил переменную типа string или массив, присвоил значение и походу проги в отладчике смотришь как оно меняется, а как в Qt сделать так же незнаю.....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 17.2.2009, 23:21
Сообщение #4


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


AntonTatu, используй QMessageBox например, или qDebug для сложных типов. Я так и делал, пока не достало и поставил Visual Studio где начиная с 2005 можно даже внутрь вектора залезть.

SABROG, а не знаешь случайно, такая среда как eclipse тоже gdb использует? Просто думаю, слезать мне с Visual Studio, или нет. В последней отлачик просто отличный.

Сообщение отредактировал Rocky - 17.2.2009, 23:22
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 17.2.2009, 23:29
Сообщение #5


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


Да, в Eclipse тоже gdb.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 17.2.2009, 23:47
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Rocky @ 17.2.2009, 23:21) *
AntonTatu, используй QMessageBox например, или qDebug для сложных типов. Я так и делал, пока не достало и поставил Visual Studio где начиная с 2005 можно даже внутрь вектора залезть.

SABROG, а не знаешь случайно, такая среда как eclipse тоже gdb использует? Просто думаю, слезать мне с Visual Studio, или нет. В последней отлачик просто отличный.

да я то же про qDebug вспомнил, но мне кажется это будет не удобно...
а под Visual Studio, то же Qt используешь или нет ?, я правильно понял что в Qt под Visual Studio можно будет в отладчике QStringи и вектора смотреть ? просто у меня интерфейс уже написан под Qt, такой же писать под чистый Visual Studio я просто свихнусь....
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 17.2.2009, 23:55
Сообщение #7


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Цитата
а под Visual Studio, то же Qt используешь или нет ?

да, правда недолго, в декабре 2008 начал изучать ))

Цитата
я правильно понял что в Qt под Visual Studio можно будет в отладчике QStringи и вектора смотреть

да

Цитата
просто у меня интерфейс уже написан под Qt, такой же писать под чистый Visual Studio я просто свихнусь

А что значит "чистый Visual Studio"? Голый winAPI/MFC? Не, не придется ничего переписывать. Единственное что, кросплатформенное приложение после компиляции под студией не получится. Хотя как писать. Я потом когда все под виндой оттестирую (именно расчеты), создаю проект *.pro, и под линухами компилю в QDevelop и ловлю возможные ошибки компиляции. Когда все ок, получаю истинно кроссплатформенное приложение. А ошибки бывают: начиная от того, как файл заголовочный написан - регистр, заканчивая отличием в реализации стандартной библиотеки (уж очень она мне нравится).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
AntonTatu
  опции профиля:
сообщение 18.2.2009, 0:08
Сообщение #8


Студент
*

Группа: Участник
Сообщений: 48
Регистрация: 27.11.2008
Пользователь №: 437

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата
А что значит "чистый Visual Studio"? Голый winAPI/MFC? Не, не придется ничего переписывать. Единственное что, кросплатформенное приложение после компиляции под студией не получится. Хотя как писать. Я потом когда все под виндой оттестирую (именно расчеты), создаю проект *.pro, и под линухами компилю в QDevelop и ловлю возможные ошибки компиляции. Когда все ок, получаю истинно кроссплатформенное приложение. А ошибки бывают: начиная от того, как файл заголовочный написан - регистр, заканчивая отличием в реализации стандартной библиотеки (уж очень она мне нравится).


Да я именно о winAPI/MFC, вообще мне не дается зараза, столько времени на него убил пока не наткнулся на Qt, на нем интерфейс как то легче рисуется (кнопочки, менюшки, взаимодействие, + не нужно (мне пока) разбираться с winAPI/MFC), меня пока кросплатформеность мало интересует)

И еще вопрос а как правильно перенести прогу из QtCreatora в Visual Studio ?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
SABROG
  опции профиля:
сообщение 18.2.2009, 0:26
Сообщение #9


Профессионал
*****

Группа: Участник
Сообщений: 1207
Регистрация: 8.12.2008
Из: Russia, Moscow
Пользователь №: 446

Спасибо сказали: 229 раз(а)




Репутация:   34  


В принципе в Eclipse есть метод "Cast To Type" (один раз приводишь и работает все время пока не закончишь отладку). Но проблема в том, что строки в Qt - юникодные. Т.ч. содержимое строк можно увидеть разве что поHex'ово


(test)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Rocky
  опции профиля:
сообщение 18.2.2009, 1:32
Сообщение #10


Старейший участник
****

Группа: Участник
Сообщений: 530
Регистрация: 22.12.2008
Из: Санкт-Петербург
Пользователь №: 463

Спасибо сказали: 22 раз(а)




Репутация:   7  


Цитата
И еще вопрос а как правильно перенести прогу из QtCreatora в Visual Studio

Не знаю насчет правильности. Прога - это набор твоих cpp/h/ui. Так? Ставишь Visual Studio, качаешь последнюю qt (хотя она уже наверное скачана :) ). Тут на форуме ребята замечательный манул написали по сборке qt под MS Visual Studio. Собираешь QT. Далее я делал так, брал первый попавшийся проект *.vcproj из примеров qt. Переписывал его в папку со своими исходниками, запускал. Удалял из него все файлы (ссылки на файлы), которые этот проект перетянул с собой, и добавлял свои файлы. Единственная сложность была разобраться чтоб при компиляции создавались MOC-файлы и генерились ui_*.h. Но это тоже не беда. В студии в солюшен эксплорере файлам можно задавать custom build setup (правая кнопка мыши по файлу), причем как для релиз, так и для дебаг версий он может быть свой. Если открыть любой проект, который сгенерился в кутявых примерах (после перекомпиляции QT для MS Visual Studio), там этот custom build setup можно стянуть и переписать к себе в проект вручную (тока не забыть имена файлов исправить).
Для хидеров, в капсулах классов в которых написан макрос Q_OBJECT в custom buld setup пишется "MOC и много всего разного.....". Для файлов *.ui - пишется "UIC и меньше всего разного" - тогда студия будет генерить на основе файла с формой заголовочный файл с++. В случае moc - метаобъектную информацию. Об этом можно на форуме тоже много всего почитать. Когда файлы сгенерятся, их надо включить в проект. То, что из ui получилось - необязательно, а то что из MOC - обязательно, иначе получишь кучу ошибок линковки. Короче, денек повозишься, и разберешься :)

А насчет того, как правильно, я думаю генерить проекты студии qmake-ом все-таки правильнее. Но с этим я до конца не разобрался, понял как сделать вручную проект, сделал эталонный, и тягаю его везде, тока изменяю когда что нужно ручками и все :)

Сообщение отредактировал Rocky - 18.2.2009, 1:34
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

2 страниц V   1 2 >
Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


RSS Рейтинг@Mail.ru Текстовая версия Сейчас: 3.6.2025, 10:41